您好,欢迎来到微智科技网。
搜索
您的当前位置:首页C语言 分类

C语言 分类

来源:微智科技网
【改错】

【一】该程序的功能:调试B01.c的程序,使之具有如下功能:从键盘上输入6个整数给数组a,然后求数组a的前k个数之和并输出。 #include\"stdio.h\" main() {

int a[6],i,k,sum; sum=0;

printf(\"\\nPlease enter 6 numbers:\"); for(i=0;i<6;i++) {

scanf(\"%d\(1)未加地址符,a[i]应改为&a[i] */ }

printf(\"\\nPlease enter another number k=\"); scanf(\"%d\

for(i=1;i<=k;i++) /*(2)循环初值应改为:i=0;*/ /*(3)循环条件应改为:isum+=a[i]; }

printf(\"\\n sum= \(4)少了输出格式字符,应改为:\"\\n sum=%d \" */ }

【二】该程序的功能:源文件C02.C是有几处错误的程序,调试使之具有如下功能:输入10个整数,按每行3个数输出这些整数,最后输出这10个整数的平均值。结果用原文件名保存。

#include \"stdio.h\" main() {

int i, n=10, a[10] /*(1)行末缺少一个分号*/

float av; /*(2)变量av为初始化,应改为:float av=0; */

for (i=0; iscanf(\"%d\(3)未加地址符,a[i]应改为&a[i] */ for (i=0; iprintf(\"%3d\

if((i+1)%3= 0) /*(4)等号写错,应改为:((i+1)%3==0) */ printf(\"\\n\"); }

for (i=0; i!=n; i++) av += a[i];

print(\"\\nav = %f\\n\(5)参数av应改为:av/10或av/n */ }

【三】该程序的功能:给定程序A03.C中函数fun的功能是:读入一个字符串(长

度<20),将该字符串中的所有字符按ASCII码升序排序后输出。 例如,若输入:dceba,则应输出:abcde。

#include

#include void fun( char t[] ) {

int c; int i, j;

for( i = strlen( t )-1; i; i-- ); /*(1)i>=0; (2)去掉行末分号*/ for( j = 0; j < i; j++ )

if( t[j] < t[ j + 1 ] ) /*(3)“<”改为“>”*/ {

c = t[j];

t[j+1] = t[ j ]; /*(4)本行改为t[j] = t[ j+1 ];*/ t[i ] = c; /*(5)本行改为t[j+1] = c*/ } }

main() {

char s[81];

printf( \"\\nPlease enter a character string: \" ); gets( s );

printf( \"\\n\\nBefore sorting:\\n \\\"%s\\\"\ fun( s );

printf( \"\\nAfter sorting decendingly:\\n \\\"%s\\\"\}

【四】该程序的功能:调试B01.c的程序,使之具有如下功能:从键盘上输入6个整数给数组a,然后求数组a的前k个数之和并输出。

#include\"stdio.h\" main() {

int a[6],i,k,sum; sum=0;

printf(\"\\nPlease enter 6 numbers:\"); for(i=0;i<6;i++) {

scanf(\"%d\(1)未加地址符,a[i]应改为&a[i] */ }

printf(\"\\nPlease enter another number k=\"); scanf(\"%d\

for(i=1;i<=k;i++) /*(2)循环初值应改为:i=0;*/ /*(3)循环条件应改为:isum+=a[i]; }

printf(\"\\n sum= \(4)少了输出格式字符,应改为:\"\\n sum=%d \" */ }

【五】该程序的功能:调试A07.C程序,使之具有如下功能:读入一个n*n的整数矩阵的元素,再找出这个矩阵的最小的元素及其所在的行号和列号(行号和列号均从1开始)输出。

#include \"stdio.h\"; /*(1)去掉行末分号*/

main() {

int n,i,j,a[80,80] ; /*(2)数组定义改为a[80][80]*/ int min,min_i,min_j;

printf(“Please enter n=”); /*(3)括号内的全角双引号改为半角双引号*/ scanf(\"%d\ printf(\"\\n\");

if (n<=0) printf(\"error:over limt!\"); else {

printf(\"Please enter a[][]:\\n\"); for (i=0; iscanf(\"%d\(4)加地址符为&a[i][j] */

min=a[0][0], min_i=0, min_j=0; for (i=0; iif (min改为min>a[i][j] 或 a[i][j]{

min=a[i][j]; min_i=i; min_j=j; }

printf(\"min:row=%d,col=%d,value=%d\\n\ min_i+1,min_j+1,a[min_i][min_j]); } }

【六】该程序的功能:调试B06.c程序:任意给定一个正整数,输出小于该正整数的

所有素数,每行K(可以任意设定)个,同一行相邻数之间用制表符隔开。

#include

void isSuShu(int num) /*(1)函数类型void应改为int或short */ {

int K=num/2; int i;

for(i=2;i<=K;i++) {

if(num%i=0) /*(2)等号写错,应改为:num%i==0*/ return 0; }

return 1; }

void main() {

int N,K,i,count=0;

printf(\"请输入一个正整数:\");

scanf(\"%d\ getchar();

printf(\"请输入每行显示的数的个数:\");

scanf(\"%d\(3)未加地址符, k应改为&k */ getchar();

printf(\"小于%d的素数如下:\\n\ for(i=2;iif(isSuShu(i)==0) /*(4)条件表达错,应改为(isSuShu(i)==1)或(isSuShu(i))*/ {

count=0; /*(5)本句应改为:count++;或count+=1;*/ printf(\"%d\\ if(count%K==0) printf(\"\\n\"); } } }

【七】该程序的功能:调试C05.c程序,使之具有如下功能:从键盘任意读入10个整数,计算出任意K个数的平均值(0#include\"stdio.h\"

mian() /*(1)主函数名拼写错误,应改为:main() */ {

int a[10],i,k,sum; /*(2)变量sum应初始化,改为:sum=0;

也可将变量声明为float并初始化,改为:„k; float sum=0; */

printf(\"\\nPlease enter 10 numbers:\");

for(i=0; i<10; i++); /*(3)应去掉行末分号*/ {

scanf(\"%d\(4)未加地址符,a[i]应改为&a[i] */ }

printf(\"\\nPlease enter another number k=\"); scanf(\"%d\

for(i=0; i<=k; i++) /*(5)循环条件应改为:isum+=a[i]; }

printf(\"\\nsum= %d\(6)输出应改为:\"...=%f\

若前述变量定义sum已声明为float,则仅改为:\"...=%f\

/*打印结果*/ }

【八】该程序的功能:计算S = 1! + 2! + ... + n!

#include \"stdio.h\"

mian() /*(1)主函数名拼写错误,应改为:main() */ { int k , i, n ; long m , s;

scanf ( \"%d\" , n ) ; /*(2)未加地址符,n应改为&n */

m =0;

for ( k=1; k<=n; k++ )

{ s=0; /*(3)初值错误,应改为:s=1; */ for( i=1; i<=k; i++) ; /*(4)去掉行末分号*/ s*=i ; m+=s; }

printf ( \"%ld\\n\" , m ) /*(5)行末缺少分号*/ }

【九】该程序的功能:计算1/n!的值,例如:获至给n输入5,则输出0.008333。

#include

int fun(int n) /*(1)函数类型错,int应改为double */ {

double res=1.0;

if(n=0) /*(2)等号写错,应改为:n==0 */ return 1.0;

while(n>1 && n<170); /*(3)应去掉行末分号*/ res*=n--; res=1/res; return res; }

main(); /*(4)应去掉行末分号*/ {

int n;

printf(\"Input N:\");

scanf(\"%d\(5)未加地址符,n应改为&n */

printf(\"\\n%d!=%f\\n\(6)输出格式%f应改为%lf */ }

【十】该程序C11.c的功能:程序C11.c有六行有错误,请改正。

#define \"stdio.h\" /*(1)#define 应改为:#include */

fun(int a,b) /*(2)形参声明错,应改为:fun(int a,int b) */ {

return(a+b); }

main() {

int x=2;y=5;z=8;r; /*(3)多变量声明错,中间的分号应改为逗号,

本行应改为:int x=2, y=5, z=8, r; */

r=fun(fun(x,y),z) /*(4)行末缺少分号*/

printf(\"%f\\n\(5)输出格式字符错,%f应改为%d */ ) /*(6)此处圆括号应改为大括号:} */

【十一】该程序的功能:调试B04.C程序,使之具有如下功能:统计学生各个分数段的成绩人数。

#include\"stdio.h\" #include

#include

main() {

int i,a[100]={90,80, 70,80, 59, 53, 40, 75, 80,90},b[6]; {

for(i=0;i<6;i++) b[i]=0; /*(1)循环初值应改为:i=1; */ for(i=0;i<10;i++); /*(2)应去掉行末分号*/ {

if (a[i]< 60) a[i]=0; else a[i]=a[i]/10; switch(a[i])

case 0: b[1]++; break; /*(3)行首或上一行末应加大括号:{ */ case 6: b[2]++; break; case 7: b[3]++; break; case 8: b[4]++; break;

case 9: b[5]++; /*(4)行末应加:break; */ default: b[5]++; } } }

printf(\"The result is: \\n\");

for (i=1; i<6; i++) printf(\"%d0 number is: \\n \

/*(5)少了一个输出格式字符,应改为:\"%d„„is: %d\\n \" */

printf(\"\\n\"); }

【十二】该程序的功能:给定程序C09.c中函数fun的功能是:计算正整数num的各位上的数字之积。例如,若输入:252,则输出应该是:20。若输入:202,则输出应该是:0。

#include\"stdio.h\" main() {

long fun (long num); /*(1)行末的全角分号应改为半角分号*/ long n;

printf(\"Please enter a number:\");

scanf(\"%ld\(2)未加地址符,n应改为&n */

printf(\"%ld\\n\(3)函数调用错,应改为:fun(n) */ }

long fun (long num) {

long k; /*(4)变量k应初始化,改为:k=1; */ do {

k*=num%10; num/=10;

} while(num) /*(5)行末缺少分号*/ return (k); }

【编程】

【1】题目描述:

编写程序,定义一个含20个元素的int类型数组。依次向数组中输入数值;在将数组元素中所有偶数输出到屏幕。 运行参考:

输入:1 54 5 7 8 66 12 33 36 输入数值为:1 54 5 7 8 66 12 33 36 所有偶数:8 66 12 36 【参考程序】

#include \"stdio.h\" #define N 20 main() {

int i,a[N];

printf(\"\\nInput 20 number:\\n\"); for (i=0; iprintf(\"%4d\}

【2】题目描述:

编写一个求水仙花的函数和判断整数n是否为素数的函数,求出3位正整数的全部水仙花数并判断求出的水仙花数是否为素数。所谓水仙花数是指三位整数的各位上的数字的立方和等于该整数本身。例如153就是一个水仙花数: 153=13+53+33

所谓素数是指一个正整数只能被1和它本身整除的数。如153就不是一个素数。

#include \"math.h\" int IsPrime(int n) {

int i;

for (i=2; i<=sqrt(n); i++) if (n%i==0) return 0; return 1; }

int IsNarcissus(int n) {

int i,j,k;

i=n/100; j=n/10%10; k=n%10;

return (i*i*i+j*j*j+k*k*k==n); }

main()

{

int i;

printf(\"\\n3位正整数的全部水仙花数有:\\n\"); for (i=100; i<=999; i++) if (IsNarcissus(i)) {

printf(\"%4d\ if (IsPrime(i))

printf(\"(素数)\"); else

printf(\"(非素数)\"); } }

【运行结果】:

3位正整数的全部水仙花数有:

153(非素数) 370(非素数) 371(非素数) 407(非素数)

【3】题目描述:

编写程序完成以下数字金字塔:随机输入一个大于零的整数,即输出一个由数字组成的金字塔即第一行即输出一个1,第二行输出两个2,第三行输出3个3,第n行输出n个n,例如:输入一个数字5,则输出结果如下图所示:

#include \"stdio.h\" main() {

int i,j,n;

printf(\"\\nInput a number:\"); scanf(\"%d\ for (i=0; ifor (j=0; j【4】题目描述:

找出1000以内所有素数,并求出它们的累加和。

#include \"math.h\" int IsPrime(int n) {

int i;

for (i=2; i<=sqrt(n); i++) if (n%i==0) return 0; return 1; }

main() {

int i,sum=0;

printf(\"\\n1000以内所有素数有:\\n\");

for (i=2; i<1000; i++) /*注,1不是素数,故从2开始*/ if (IsPrime(i)) {

printf(\"%4d\ sum += i; }

printf(\"\\n其累加和sum=%d\\n\}

【运行结果】:

1000以内所有素数有:

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233 239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331 337 347 349 353 359 367 373 379 383 3 397 401 409 419 421 431 433 439 443 449 457 461 463 467 479 487 491 499 503 509 521 523 541 547 557 563 569 571 577 587 593 599 601 607 613 617 619 631 1 3 7 653 659 661 673 677 683 691 701 709 719 727 733 739 743 751 757 761 769 773 787 797 809 811 821 823 827 829 839 853 857 859 863 877 881 883 887 907 911 919 929 937 941 947 953 967 971 977 983 991 997

其累加和sum=10591

【5】题目描述:

有一个数组,内放10个整数,要求找出最小的数和它的下标。

#include \"stdio.h\" #define N 10 main() {

int i,a[N],min;

printf(\"\\nIntput 10 number:\\n\"); for (i=0; ifor (i=1; iif (a[i]printf(\"min: a[%d]=%d\\n\}

【6】题目描述:

用函数编程实现如下功能:求出比x大的最初k(k<1000)个素数,放入数组中输出。例如:程序运行时输入:10 10,输出:11 13 17 19 23 29 31 37 41 43 要求:在主函数中定义数组并输出处理的结果。

#include \"stdio.h\" #include \"math.h\" int IsPrime(int n) {

int i;

for (i=2; i<=sqrt(n); i++) if (n%i==0) return 0; return 1; }

main() {

int x,k,i;

printf(\"\\nInput x and k:\\n\"); scanf(\"%d%d\ printf(\"\\n\"); i=0;

while (ix++;

if (IsPrime(x)) {

printf(\"%4d\ i++; } } }

【7】题目描述:

从键盘输入一个矩阵a[3][3]、b[3][3],先在屏幕上输出该矩阵,然后将矩阵对应数据相乘,即aij*bij将相乘后的数据放到矩阵a[3][3],再输出求乘后的矩阵。(注意:要程序实现过程中调用到自己编写的函数。)

运行参考:

请输入矩阵a[3 [3]的值:1 2 3 4 5 7 8 9 b[3][3] 的值:1 2 3 4 5 6 7 8 9 矩阵a[3] [3]被处理后的值为: 1 4 9 16 25 36 49 81

【参考程序】 #define M 3 #define N 3

void InputMatrix(int a[][N],int m,int n) {

int i,j;

for (i=0; iscanf(\"%d\}

void OutputMatrix(int a[][N],int m,int n) {

int i,j;

for (i=0; ifor (j=0; jprintf(\"%4d\ printf(\"\\n\"); } }

void MulMatrix(int a[][N], int b[][N], int m, int n) {

int i,j;

for (i=0; imain() {

int a[M][N],b[M][N];

InputMatrix(a,M,N); InputMatrix(b,M,N); printf(\"a=\\n\");

OutputMatrix(a,M,N); printf(\"b=\\n\");

OutputMatrix(b,M,N); MulMatrix(a,b,M,N); printf(\"a*b=\\n\"); OutputMatrix(a,M,N); }

【8】题目描述:

设有一个字符串This is a program,请编程求字符a第二次出现的位置并输出。要求:编程题对应的工程名为“prog1”,工程目录放在学号文件夹下。

main()

{

char s[]=\"This is a program\"; int i=0,j=0;

while (s[i]!='\\0'&&j<2) {

if (s[i]=='a') j++; i++; }

if (j==2)

printf(\"position is : %d\\n\ else

printf(\"not found.\\n\"); }

【9】题目描述:

编写程序如下功能:从键盘上读入一个整数n(n<=20),求n以内所有素数阶乘的和。(即求2!+3!+5!…..+k!,其中k为小于n的素数,要求必须写出判断一个数是否为素数的子函数)。

#include \"math.h\" int IsPrime(int n) {

int i;

for (i=2; i<=sqrt(n); i++) if (n%i==0) return 0; return 1; }

long Fact(int n) {

int i; long f=1L;

for (i=2; i<=n; i++) f *= i; return (f); }

main() {

int n,i; long sum=0L;

printf(\"\\n请输入整数n=?\"); scanf(\"%d\

printf(\"%d以内的所有素数有:\\n\ for (i=2; i<=n; i++) if (IsPrime(i))

{

printf(\"%4d\ sum += Fact(i); }

printf(\"\\n这些素数的阶层之和:sum=%ld\\n\}

【运行结果】: 请输入整数n=?20 20以内的所有素数有:

2 3 5 7 11 13 17 19 这些素数的阶层之和:sum=1793094960

【10】题目描述:

该程序的功能:输出从公元1年到现在(公元2010年)间所有闰年(能被4整除且不能被100整除或能被400整除的年份),每行输出8个。要求:编程题对应的工程名为“prog1”,工程目录放在学号文件夹下。

main() {

int i,j=0;

for (i=4; i<=2010; i+=4) {

if ((i%4==0&&i%100!=0)||i%400==0) {

printf(\"%6d\ j++;

if (j%8==0)

printf(\"\\n\"); } } }

【11】题目描述:

编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串并输出结果。

void AnalyStr(char *s,int *Alpha, int *Digits, int *Space, int *Other) {

char *p;

*Alpha=*Digits=*Space=*Other=0; p=s;

while (*p) {

if ((*p>='A'&&*p<='Z')||(*p>='a'&&*p<='z')) *Alpha+=1; else if (*p>='0'&&*p<='9') *Digits+=1; else if (*p==' ') *Space+=1; else *Other+=1; p++;

} }

main() {

char *s;

int *Alpha,*Digits,*Space,*Other;

gets(s);

AnalyStr(s,Alpha,Digits,Space,Other);

printf(\"Alpha=%d,Digits=%d,Space=%d,Other=%d\\n\ *Alpha,*Digits,*Space,*Other); }

【12】题目描述:

Fibonacci数列:其第1、2个数全为1,从第3个数开始,每个数等于它前两个数的和。 (1、1、2、3、5、„„)

要求:编程实现按照输入的项数实现Fibonacci数列的输出。 例如 输入3 输出为 1 1 2

输入5 输出为 1 1 2 3 5 要求:编程题对应的工程名为“prog1”,工程目录放在学号文件夹下。

main() {

int i=1,j=1,k,n;

while (1) {

printf(\"\\n请输入数列输出个数n=?\"); scanf(\"%d\ if (n<3)

printf(\"输入错误!输出个数应>=3个。\\n\"); else

break; }

printf(\"%4d%4d\ n -= 2 ; while (n>0) {

k=i+j;

printf(\"%4d\ i=j; j=k; n--; } }

【13】题目描述:

编写程序,其中使用函数base完成以下功能:将输入的一个base(取值2到16)进制正整数转换为十进制数输出。整数base和要转换的以字符串str表示的base进制数由键盘输入。如,输入16 2A则表示输入16进制数2A,程序将输出十

进制整数42;输入3 211则输出22。

int base(int k, char s[]) {

int len=0,sum=0; int i,j,t,n;

while (s[len]!='\\0') len++; i=len-1;

while (s[i]!='\\0') {

n=0;

if (s[i]>='0'&&s[i]<='9') n=s[i]-48;

else if (s[i]>='A'&&s[i]<='F') n=10+s[i]-'A'; t=1;

for (j=0; jreturn (sum); }

main() {

int sz;

char str[20];

scanf(\"%d %s\ if (sz<2||sz>16)

printf(\"输入错误。\\n\"); else

printf(\"%d\\n\}

【14】题目描述:

从键盘输入n(n<=10)个整数,统计其中偶数的个数,并对输入的偶数从小到大排序输出 (30) 测试用例:

输入的整数为:3 6 18 256 45 8 偶数个数为:4

偶数由小大排序为:6 8 18 256

#define N 10 main() {

int a[N],b[N],n,t,i,j;

printf(\"\\n输入数据的个数n=?\"); while (1)

{

scanf(\"%d\ if (n<=10) break;

printf(\"数据个数不能超过10个。\"); } j=0;

for (i=0; iscanf(\"%d\ if (a[i]%2==0) b[j++]=a[i]; }

printf(\"\\n偶数个数为:%d\\n\ n=j;

for (i=0; it=b[i]; b[i]=b[j]; b[j]=t; }

printf(\"偶数由小大排序为:\"); for (i=0; i【15】题目描述:

用函数SUM完成以下功能:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时

共有5个数相加),a的值和相加的个数由键盘控制。

main() {

int a,n,i,j; long s,sum=0;

printf(\"\\n请输入a的值及其个数:\"); scanf(\"%d%d\ printf(\"s=\");

for (i=1; i<=n; i++) {

s = a ;

for (j=1; j1)

printf(\"+%ld\ else

printf(\"%ld\

sum += s ; }

printf(\"\\n =%ld\\n\}

【16】题目描述:输入4*4的数组,编写程序实现找出数组中其值最大和最小的元

素以及它们在数组中的位置。

#define M 4 #define N 4 main() {

int a[M][N],i,j;

int min_row,min_col,max_row,max_col;

for (i=0; iscanf(\"%d\

min_row=min_col=max_row=max_col=0; for (i=0; iif (a[i][j]min_row=i; min_col=j; }

if (a[i][j]>a[max_row][max_col]) {

max_row=i; max_col=j; } }

printf(\"max:a[%d][%d]=%d\\n\ printf(\"min:a[%d][%d]=%d\\n\}

【17】题目描述:

定义一个函数:void sortArray(float*a,int n,short mode);该函数的功能是对一个数组a进行排序,n为参与排序的元素的个数,mode为排序方式,当mode=0时,按升序排序,mode不为0时按降序排序。

在主函数中调用该函数,从而实现对任意输入的n(不大于100)个浮点型数进行排序,最后输出升序及降序的排序结果(输出的数保留小数点后三位有效数字)。以下是该程序的一个测试画面:

注意:参与排序的数的个数不固定。可以为4,也可以为其他数如9等等。

#define N 100

void sortArray(float *a, int n, short mode) {

int i,j,t;

for (i=0; iif (a[j]t=a[i]; a[i]=a[j]; a[j]=t; } } else {

if (a[j]>a[i]) {

t=a[i]; a[i]=a[j]; a[j]=t; } } }

main() {

float a[N]; int i,n;

printf(\"请输入数组元素的个数(N<100):\"); while (1) {

scanf(\"%d\ if (n<=100) break;

printf(\"输入错误。请重新输入。\\n\"); }

for (i=0; iprintf(\"Array[%d]=\ scanf(\"%f\ }

sortArray(a,n,0);

printf(\"该数组按升序排列结果如下:\\n\"); for (i=0; isortArray(a,n,1);

printf(\"该数组按降序排列结果如下:\\n\"); for (i=0; i【18】题目描述:Fibonacci数列:其第1、2个数全为1,从第3个数开始,每个数等于它前两个数的和。

(1、1、2、3、5、„„)

要求:编程实现按照输入的项数实现Fibonacci数列的输出。 例如 输入3 输出为 1 1 2

输入5 输出为 1 1 2 3 5

main() {

int i=1,j=1,k,n;

while (1) {

printf(\"\\n请输入数列输出个数n=?\"); scanf(\"%d\ if (n<3)

printf(\"输入错误!输出个数应>=3个。\\n\"); else

break; }

printf(\"%4d%4d\ n -= 2 ; while (n>0) {

k=i+j;

printf(\"%4d\ i=j; j=k; n--; } }

【19】题目描述:

函数fun的功能是:将一字符串中除了下标为奇数、同是ASCII码值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。

例如:若s所指字符中的内容为:ABCDEFG 12345,其中字符A的ASCII码值虽为奇数,但所在元素的下标为偶数,因此必须删除。最后t所指的数组中的内容应是:135。 【参考程序】

#include \"string.h\" #define N 100 main() {

char s[N],t[N]; int i,j=0;

gets(s); /*注,用scanf输入者扣一半分*/ i=0;

while (s[i]!='\\0') {

if (i%2!=0&&s[i]%2!=0) t[j++]=s[i]; i++; }

t[j]='\\0'; puts(t); }

【20】题目描述:根据以下公式编程求π的近似值,直到最后一项的绝对值小有10的-6次方为止。请保留6位有效数字。 (π/4)= 1-1/3+1/5-1/7+...

#include \"math.h\" main()

{ int s ;

float n , t , pi ; t = 1.0 ; pi = 0 ; n = 1.0 ; s = 1 ;

while (fabs (t) >= 1e-6) { pi = pi + t ; n += 2.0 ; s = -s ; t = s/n ; }

pi = pi * 4 ;

printf (\" pi=%f\\n \" , pi) ; }

【21】题目描述:

请编程序打印出一张乘法“九九表”。表的样式如下: 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18

3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 72 9 18 27 36 45 54 63 72 81

main() {

int i,j,p;

printf(\"\\n\");

for (i=1; i<=9; i++) {

for (j=1; j<=9; j++) {

p=i*j;

printf(\"%4d\ }

printf(\"\\n\"); } }

【22】题目描述:

编写程序,其中使用函数base完成以下功能:将输入的一个base(取值2到16)进制正整数转换为十进制数输出。整数base和要转换的以字符串str表示的base进制数由键盘输入。如,输入16 2A则表示输入16进制数2A,程序将输出十进制整数42;输入3 211则输出22。

int base(int k, char s[]) {

int len=0,sum=0; int i,j,t,n;

while (s[len]!='\\0') len++; i=len-1;

while (s[i]!='\\0') {

n=0;

if (s[i]>='0'&&s[i]<='9') n=s[i]-48;

else if (s[i]>='A'&&s[i]<='F') n=10+s[i]-'A'; t=1;

for (j=0; jreturn (sum); }

main() {

int sz;

char str[20];

scanf(\"%d %s\ if (sz<2||sz>16)

printf(\"输入错误。\\n\"); else

printf(\"%d\\n\}

【23】题目描述:

输入正方体的长宽高l,w,h。编写函数VOL计算其体积及三个面x*y,x*z,y*z的面积。

void vol(float l, float w, float h) {

printf(\"正方体的v=%f\\n\

printf(\"正方体x*y面的面积=%f\\n\ printf(\"正方体x*z面的面积=%f\\n\ printf(\"正方体y*z面的面积=%f\\n\}

main() {

float l,w,h;

printf(\"\\n请输入正方体的长宽高:\"); scanf(\"%f,%f,%f\ vol(l,w,h); }

【24】题目描述:

函数fun的功能是:将一字符串中除了下标为奇数、同是ASCII码值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。

例如:若s所指字符中的内容为:ABCDEFG 12345,其中字符A的ASCII码值虽为奇数,但所在元素的下标为偶数,因此必须删除。最后t所指的数组中的内容应是:135。

#include \"string.h\" #define N 100 main() {

char s[N],t[N]; int i,j=0;

gets(s); /*注,用scanf输入者扣一半分*/ i=0;

while (s[i]!='\\0') {

if (i%2!=0&&s[i]%2!=0) t[j++]=s[i]; i++;

}

t[j]='\\0'; puts(t); }

【25】题目描述:

为数组a输入各元素值,编写函数max_value ,求出其中最大元素max,并通过函数将此值返回主调函数并输出。

#define N 10

int max_value(int a[],int n) {

int max,i;

max=a[0];

for (i=0; iif (a[i]>max) max=a[i]; return (max); }

main() {

int a[N],i;

for (i=0; iprintf(\"max=%d\\n\}

【26】题目描述:

编程从输入的10个数中,去掉一个最大数和一个最小数,求剩余数的平均值。(要求分别在屏幕上显示出去掉的最大数、最小数及平均数)

#include \"stdio.h\" #define N 10

float max(float a[],int n) {

int i; float m;

m=a[0];

for (i=1; im) m=a[i]; return (m); }

float min(float a[],int n) {

int i; float m;

m=a[0];

for (i=1; imain() {

int i;

float a[N],sum=0,avg;

printf(\"\\nInput 10 number:\\n\"); for (i=0; iavg=(sum-max(a,N)-min(a,N))/(N-2); printf(\"Average=%f\}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务