当前位置:文档之家› c语言程序填空题1

c语言程序填空题1

三、程序填空题导读:在程斥填空题中,已经给出了程序的主干,读者首先要理解程序的思路, 再选择正确的内容填入空白处,使程序完成既定的功能。

这类习题的设计就是要引导读者逐步堂握编程的方法。

本节习题的难度适中,可能有些典型的程序在课堂上己经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。

在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而白己编写程序乂不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。

【3.1】下面程序的功能是不用第三个变量,实现两个数的对调操作。

ttinclude <stdio. h>main(){ int a, b;scanf (”%d%d", &a, &b):printf ("a=%d, b二%d\n", a, b); printf ("a=%d, b=%d\n/F, a, b): }a=b=a=①②③【3.2】下面程序的功能是根据近似公式:十/6~ 1/12+1/22+1/32+……+l/n2, 求兀值。

廿include〈math・ h>double pi(long n){ double s=0. 0;long i;for(i=l; i<=n; i++)s=s+ ①;return (②);}[3.3]下面的程序的功能是求一维数组中的最小元素。

findmin(int *s, int t,int *k){ int p;for(p=0, *k=p: p<t; p++)if (s[p]<s[*k])①:}main 0{ int a[10], i, *k=&i;for(i=0; i<10; i++)scanf &a[i]);findmin(a, 10, k);printf ("%d, %d\n", *k, a L*kJ);}【3.4】下面程序的功能是计算1-3+5-7+……-99+101的值。

main(){ int i, s=0:for(i=l; i<=101: i+=2){①;s二s+t:②;}printf ("%d\n", s);}[3.5]有以下程序段:s=l. 0;for(k=1: k<=n: k++)s=s+l. 0/(k*(k+1));printf ("%f\n", s);填空完成下述程斥,使之与上述程序的功能完全相同。

s=0. 0:①;k=0;do{ s二s+d;②;d=1.0/(k*(k+l));}while(③);printf ("%f\n", s);[3.6]下而程用的功能是从键盘上输入若干学生的学习成绩,统计并输出最高成绩和最低成绩,当输入为负数时结束输入。

main ();、float x, amax, amin;scanf &x);amax=x:amin=x;while(①):if(x>amax) amax=x;if ( (2) ) amin=x:scanf ("%f", &x):}printf (\namax=%f \namin=%f \n, amax, amin): }【3.7】下而程序的功能是将形参x的值转换为二进制数,所得的二进制数放在一个一维数组中返回,二进制数的最低位放在下标为0的元素中。

fun(int x, int b[]){ int k=0,r:do{ r=x% ①;b[k 十+]=!*:x/=②;}wh 订e (x);}【3.8】下面程序的功能是输出1到100之间每位数的乘积大于每位数的和的数。

例如数字26,数位上数字的乘积12大于数字之和8。

main(){ int n, k=l, s=0, m:for(n=l; n<=100; n++){ k=l:s=0;①;while(②){ k*=m%10:s+=m%10;③;}if (k>s)printf n);}}[3.9]下面程序的功能是统计用0至9之间的不同的数字组成的三位数的个数。

main(){ int i, j, k, count=0;for(i=l; i<=9; i++)for(j=0; j<=9; j++)if(①)continue;else for(k=0; k<=9: k++)辻(②)count++;printfcount):}[3.10]下面程序的功能是输出100以内的个位数为6、且能被3整除的所有数。

main (){ int i, j;for(i=0;①:i++){ j=i*10+6;if(②)countinue:printf j);}}[3.11】下面程仔的功能是用辗转相除法求两个正整数m和n的最大公约数。

hcf (int m, int n){ int r;迁(m<n){ r=m;①:n=r:}r=m%n:while(②){ m=n:n=r;r=m%n:}③:}[3.12]下面程序的功能是使用冒泡法对输入的10个浮点数从小到大进行排序。

排好序的10个数分两行输出。

程序如下:ftinclude <stdio. h>main(){①:int i, j;printf("Input 10 numbers please'n");for(i=0;②;i++ )scanf (*%f &a [i]):printf("\n"):for(i=2;③;i++ ) for(j=0;④;j++ ) if(⑤) { x 二a[j]:⑥:a[j+l]=x;} ”printf("The sorted 10 numbers; for(i=0:⑦;i++ ) {迁(⑧)printf("\n"): printf a[i]);}printf("\n");}[3.13】下面程序的功能是读入20个整数,统计非负数个数,并计算非负数之和。

^include "stdio. h"main(){ int i, a[20], s, count:s=count=0:for(i=0: i<20; i++ )scanf ("%d",①);for(i=0; i<20; i++){辻(a[i]<0)②:s+=a[i];count++;}printf("s=%d\t count=%d\n", s, count);}[3. 14]下面程序的功能是删除字符审s中的空格。

ttinclude <stdio. h>main (){ char *s="Beijing ligong daxue";int i, j;for(i=j=0; s[i]!='\0': i++)if(s[i]!=',)①;else ②;printfs):[3.15]下面程序的功能是将字符串s中所有的字符5’删除。

请选择填空。

ttinclude<stdio. h> main(){ char s[80]:int i, j;gets(s):[3.16]下面程序的功能是输出两个字符串中对应相等的字符。

请选择填空。

#include <stdio. h>char x[]="programming":char y []=,,Fortran z,;main(){ int i=0;while(x[i] != ' \0' && y[i] != ' \0')if (xCi]=y[iJ)printf①):[3.17]下面程序的功能是将字符串s中的每个宁符按升序的规则插到数组a 中,字符串a已排好序。

#include <string・ h>main(){ char a [20] =/x cehiknqtw z,;char s[]="fbla":int i, k, j;for(k=0: s[k]!= ' \0'; k++ ){ J=0:while(s[k]>=a[j] && a[j]!二'\0‘) j++;for(①)②; a[j]=s [k];puts(a): }[3. 18】下面程序的功能是对键盘输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。

例如:输入的两个字符串分别为"abcdefg"和"abceef",则输出为-1。

^include <stdio. h>main(){ char strl[100], str2[100],c;int i, s;printf("Enter string 1: ”); gets(stri); printf("Enter string 2: ”); gets(str2); i 二0;while((strl[i] == str2[i] && strl[i]!=①))i++;s=②;printf (*%d\n*, s):}[3.19]下面的函数expand在将字符串s复制到字符串t时,将其中的换行符和制表符转换为可见的转义字符表示,即用’\n表示换行符,用'\t'表示制表符。

expand (char s[], char t []){ int i, j:for(i=j=0; s[i]!= '\0'; i++ )switch (s[i]){ case ' \n' : t [①]二②;t[j++]二,n';break:case ' \t' : t [③]二④;t[j±+]二't';break:default: t[⑤]二s[i];break:}t[j]=⑥;}(3. 20]卜面的函数index (char s[], char t[])检査字符串s中是否包含字符串t,若包含,则返回七在£中的开始位置(下标值),否则送回7.index (char s [], char t []){ int i, j, k;for(i=0; s[i]!= '\0'; i++ ){ for (j=i, k=0;① && s[j]=t [k]; j++, k++):if(②)return (i):}return(-1):}[3.21]下面程序的功能是计算S二k! ok=0long fun(int n){ int i;long s;for(i=l; i ①:i++)s*=i;return (②);}main (){ int k, n;long s;scanf &n);s=③:for(k=0: k<=n: k++)s+=④;printf("%ld\n",s);}(3. 22]下面程斥的功能是显示具有n个元素的数组s中的最大元素。

相关主题