常见C语言编程题

编程入门 行业动态 更新时间:2024-10-24 12:28:20

<a href=https://www.elefans.com/category/jswz/34/1770088.html style=常见C语言编程题"/>

常见C语言编程题

1.编写函数fun,它的功能是计算:
s作为函数值返回。C语言中可调用log( n )函数求ln (n)。log函数的引用说明是: double log(double x)。例如,若m的值为: 20,fun函数值为: 6.506583。

#include <conio.h>#include <math.h>#include <stdio.h>double   fun(  int  m )
{double s=0;int i;for(i=1;i<=20;i++)s+=log(i);return sqrt(s);
}
main()
{  printf("%f\n", fun(20));   
}

2.请编一个函数float fun(double h),函数的功能是对变量h中的值保留2位小数,并对第三位进行四舍五入 (规定h中的值为正数)。
例如:
h 值为 1234.567, 则函数返回 1234.570000;
h 值为 1234.564, 则函数返回 1234.560000。

#include <stdio.h>float fun ( float  h )
{long t=(h*1000+5)/10;return(float)t/100;
}int main( )
{   float  h;while(1){printf("请输入一个小数:");scanf("%f",&h);printf("结果为:%7.2f\n",fun(h)); }return 0;
}

3.编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程:cos(x)-x=0 的一个实根。

迭代步骤如下:
(1)取 x1 初值为0.0;
(2)x0 = x1,把x1的值赋给 x0;
(3)x1 = cos(x0),求出一个新的x1;
(4)若x0 - x1的绝对值小于 0.000001,执行步骤(5),否则执行步骤(2);
(5)所求x1就是方程 cos(x)-x=0 的一个实根,作为函数值返回。
程序将输出结果Root=0.739085。

#include <conio.h>#include <math.h>#include <stdio.h>float  fun()
{float x1,x0;x0=1;x1=cos(x0);while(fabs(x0-x1)>=0.00001) {x0=x1;x1=cos(x0);}return x1;
}main()
{ printf("Root =%f\n", fun());   
}

4.请编写函数fun, 函数的功能是: 删去一维数组中所有相同的数, 使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
例如:
一维数组中的数据是:2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。
删除后,数组中的内容应该是: 2 3 4 5 6 7 8 9 10。

#include <stdio.h>#define    N    80int  fun(int  a[], int  n)
{int i,c=1;for(i=1;i<n;i++){if(a[i]!=a[i-1])a[c++]=a[i];}return c;
} main()
{  int  a[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10},i,n=20;printf("The original data :\n");for(i=0; i<n; i++)printf("%3d",a[i]);n=fun(a,n);printf("\n\nThe data after deleted :\n");for(i=0;i<n;i++)printf("%3d",a[i]); printf("\n\n");   
}

5.函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上, b数的十位和个位数依次放在c数的百位和个位上。
例如,当a=45,b=12。调用该函数后,c=4152。

#include <conio.h>#include <stdio.h>void fun(int a, int b, long *c)
{*c=10*(a%10)+1000*(a/10)+100*(b/10)+b%10;
}main()
{  int a,b; long c;printf("Input a, b:");  scanf("%d%d", &a, &b);fun(a, b, &c);printf("The result is: %d\n", c);   
}

6.请编写函数fun, 它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。
例如,在主函数中从键盘给n输入20后, 输出为: s=0.583333。
注意:要求n的值不大于100。

#include <stdio.h>double fun(int  n)
{double s;double z;for( int i=1;i<=n;i++){if(i%5==0||i%9==0){z=(double)i;s+=1/z;}}return s;
}
main()
{ int  n;    double  s;printf("\nInput n:  ");  scanf("%d",&n);s=fun(n);printf("\n\ns=%f\n",s);  
}

7.请编写函数fun,它的功能是: 求出 1 到 1000 之内能被 7 或11整除、但不能同时被 7 和 11 整除的所有整数并将它们放在 a所指的数组中,通过 n 返回这些数的个数。

#include <conio.h>#include <stdio.h>void wwjt();
void  fun (int *a, int *n)
{int i,j=0;for (i=1; i<=1000; i++)if (!(i%7==0&&i%11==0)&&(i%7==0||i%11==0))a[j++]=i;*n=j;
} main( )
{  int aa[1000], n, k ;fun ( aa, &n ) ;for ( k = 0 ; k < n ; k++ )if((k + 1) % 10 == 0) printf("\n") ;else printf("%5d", aa[k]) ;wwjt( );
}
void wwjt ( ){ FILE *out ;int aa[1000], n, k ;out = fopen("out.dat","w") ;fun ( aa, &n ) ;for ( k = 0 ; k < n ; k++ )if((k + 1) % 10 == 0) fprintf(out, "\n") ;else fprintf(out, "%5d", aa[k]) ;fclose(out) ;
}

8.请编写函数fun,函数的功能是:统计各年龄段的人数。N个年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d[0]中,把10至19岁年龄段的人数放在d[1],把20至29岁年龄段的人数放在d[2],其余以此类推,把100岁(含100)以上年龄的人数放在d[10]中。结果在主函数中输出。

#include<stdio.h>
#define N 50
#define M 11
void fun(int *a, int *b)
{int i = 0;for (i = 0;i < N;i++)if (a[i] / 10 >= 10)b[10] += 1;elseb[a[i]/ 10] += 1;
}
double rnd()
{static int t = 29, c = 217, m = 1024, r = 0;r = (r*t + c) % m;return((double)r / m);
}
int main()
{int age[N], i, d[M] = {0};for (i = 0;i < N;i++)age[i] = (int)(115 * rnd());printf("The orignal data:\n");for (i = 0;i < N;i++)printf((i + 1) % 10 == 0 ? "%4d\n" : "%4d", age[i]);printf("\n\n");fun(age, d);for (i = 0;i < 10;i++)printf("%4d--%4d:%4d\n", i * 10, i * 10 + 9, d[i]);printf("Over  100: %4d\n", d[10]);
}

9.程序定义了N×N的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的s。
例如:a 数组中的值为
a =
则返回主程序后s的值应为: 3.375。

#include <stdio.h>#include <conio.h>#include <stdlib.h>#define  N  5double fun ( int w[][N] )
{int i,j;double S=0.0;for(i=0;i<N;i++)	for(j=0;j<N;j++)if(i==0 || j==0 || i==N-1 || j==N-1)S=S+w[i][j];return S/(4*N-4);
}main ( )
{  int a[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1};int i, j;double s ;printf("***** The array *****\n");for ( i =0;  i<N; i++ ){  for ( j =0; j<N; j++ ){  printf( "%4d", a[i][j] ); }printf("\n");}s = fun ( a );printf ("***** THE  RESULT *****\n");printf( "The sum is :  %lf\n",s );
}

10.请编写函数fun, 函数的功能是: 将M行N列的二维数组中的字符数据, 按列的顺序依次放到一个字符串中。
例如, 二维数组中的数据为:
W W W W
S S S S
H H H H
则字符串中的内容应是: WSHWSHWSH。

#include <stdio.h>#define     M   3#define     N   4void  fun(char  (*s)[N], char *b)
{int i,j,k=0;for(j=0;j<N;j++)for(i=0;i<M;i++){b[k]=*(*(s+i)+j);k++;}b[k]= '\0';
}main()
{ char w[M][N]={{'W','W','W','W'},{'S','S','S','S'},{'H','H','H','H'}};char a[100];int  i,j;printf("The matrix:\n");for(i=0; i<M; i++){  for(j=0;j<N; j++)printf("%3c",w[i][j]);printf("\n");}fun(w,a);printf("The A string:\n");puts(a);printf("\n\n");   
}

11.程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N], int n),函数的功能是:使数组左下三角元素中的值乘以n 。
例如:若n的值为3,a 数组中的值为
a =则返回主程序后a数组中的值应为

#include <stdio.h>#include <conio.h>#include <stdlib.h>#define  N  5int  fun ( int a[][N], int n )
{int i,j;if(a == NULL) return a[i][j];for(i=0;i<N;i++)for(j=0;j<=i;j++)a[i][j]=a[i][j]*n;
}
main ( )
{  int  a[N][N], n, i, j;printf("***** The array *****\n");for ( i =0;  i<N; i++ ){  for ( j =0; j<N; j++ ){  a[i][j] = rand()%10; printf( "%4d", a[i][j] ); }printf("\n");}do n = rand()%10 ; while ( n >=3 );printf("n = %4d\n",n);fun ( a, n );printf ("***** THE  RESULT *****\n");for ( i =0;  i<N; i++ ){  for ( j =0; j<N; j++ ) printf( "%4d", a[i][j] );printf("\n");}
}

12.假定输入的字符串中只含有字母和号。请编写函数fun,它的功能是:将字符串尾部的号全部删除,前面和中间的号不删除。
例如。字符串的内容为
ABCDEFG*******,删除后,字符串中的内容应当是:*ABCDEFG。编写程序时不得使用C语言提供的字符串函数。

#include <stdio.h>#include <string.h>void  fun( char *a){char *pch = NULL;pch = a;while(*pch == '*' && *pch != '\0')pch++;while(*pch != '\0' && pch != a){*a = *pch;a++;pch++;}*a = '\0';
}
main(){  char  s[81];printf("Enter a string:\n");gets(s);fun( s );printf("The string after deleted:\n");puts(s);
}

13.请编写函数fun, 函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入, 规定所有单词由小写字母组成, 单词之间由若干个空格隔开, 一行的开始没有空格。

#include<string.h>#include<stdio.h>#define N 80int fun(char *s){int n=1;int len=strlen(s);for(int i=0;i<len-1;i++){if(s[i]==' '&&s[i+1]!=' '){n++;}}return n;
}main()
{  char  line[N];   int  num=0;printf("Enter a string :\n");gets(line);num=fun( line );printf("The number of word is  :  %d\n\n",num);   
}

14.请编写一个函数fun,它的功能时:将ss所指字符串中所有下标为奇数位置上的字母转换为大些(该位置上不是字母,则不转换)。
例如,若输入"abc4EFg",则应输出"aBc4EFg"。

#include <stdio.h>#include <string.h>void fun(char *ss){int len=strlen(ss);int z;for(int i=1;ss[i]!='\0';i+=2){z=ss[i];if(z>97&&z<122){z-=32;ss[i]=z;}}
}
int main() {char tt[81] ;printf( "\nPlease enter an string within 80 characters:\n" ); gets( tt );printf( "\n\nAfter changing, the string\n  \"%s\"", tt );fun( tt );printf( "\nbecomes\n  \"%s\"\n",  tt  );
}

更多推荐

常见C语言编程题

本文发布于:2023-07-28 21:54:10,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1330263.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:常见   语言

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!