printf(\ printf(\
} return 0; }
5.鸡兔共有30只,脚共有90个,下列程序段是计算鸡兔各有多少只,请填空。
for(x=1;x<=29;x++) {
y=30-x;
if( )printf(\}
三、读程序
#include
int n1=0,n2=0,n3=0,n4=0; char c;
printf (\请输入一行字符:\\n\ while ((c=getchar())!='\\n') { if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
n1++;
else if(c= =' ')
n2++ ;
else if(c>='0'&&c<='9')
n3++;
else n4++; }
printf(\英文字母个数为:%d\\n空格个数为:%d\\n数字个数为:%d\\n其他字符的个数为:%d\\n\
return 0; }
根据编译、连接和运行程序回答下列问题:
① 本题的循环进行条件是什么?终止条件是什么?循环体做什么? ② 对循环体的语句加上注释。 ③ 绘制程序的流程图或N-S图。 程序2代码:#include
int i,j;
for(i=1;i<=5;i++) for(j=1;j<=9;j++) {
if(j<=5-i||j>=5+i) printf(\ else printf(\ if(j= =9) printf(\ }
return 0; }
根据编译、连接和运行程序回答下列问题:
① 本题是双重循环,用到循环变量i,j,其中,它们谁控制行?谁控制列?是如何控制的? ② 程序中的if-else语句在循环体中起什么作用?
③ 将程序中if(j= =9) printf(\语句去掉,重新编译、连接、运行程序,观察程序结果并同原程序结果相比较有何不同,若不同请分析原因及说明该语句在程序中的作用。
程序3代码: 方法1:
#include
#include
int i,j,a,n,s=0;
printf(\请输入a n\\n\scanf(\ for(j=1;j<=n;j++) for(i=0;i printf(\ return 0; } 方法2: #include printf(\请输入a n的值\\n\ scanf(\ int s=a; for(int i=2;i<=n;i++) { a=a*10+a; s+=a; } printf(\ return 0; } 根据编译、连接和运行程序回答下列问题: ① 比较方法1和方法2的算法区别。 ② 方法1中表达式s+=a*pow(10,i)中的pow( )是什么函数?调用此函数时去掉#include ③ 解决本题的核心算法是什么? 程序4代码: #include int n,score,max,min,aver; aver=0; n=0; max=100;min=0; printf(\ while(1) { scanf(\ if(score<0) break; aver+=score; n++; if(score>max) max=score; if(score aver=aver/n; printf(\ printf(\ printf(\ printf(\ return 0; } 根据编译、连接和运行程序回答下列问题: ① 输入并运行程序。输入数据如下:92 85 64 78 53 98-1。其中前6个是学科分数,最后输入的一个负数作结束标志。分析结果是否正确,如不正确,请找出错误的原因,修改后重新运行,直到结果正确为止。 ② 程序中if(score<0) break;语句起何作用? ③ 程序中当循环个数不确定时是如何处理的?程序中是如何求最高分、最低分的?这种算法有何特别之处? 习题6 1.选择题 (1)在下列数组定义、初始化或赋值语句中,正确的是___。 A)int a[8]; a[8]=100; B)int x[5]={1,2,3,4,5,6}; C)int x[ ]={1,2,3,4,5,6}; D)int n=8; int score[n]; (2)若已有定义:int i, a[100]; 则下列语句中,不正确的是____。 A)for ( i=0; i<100; i++ ) a[i]=i; B)for ( i=0; i<100; i++ ) scanf ( \ C)scanf (\ D)for ( i=0; i<100; i++ ) scanf ( \ (3)与定义char c[ ]={\不等价的是___。 A)char c[ ]={?G?,?O?,?O?,?D?,?\\0?}; B)char c[ ]=\ C)char c[4]={\ D)char c[5]={?G?,?O?,?O?,?D?,?\\0?}; (4)若已有定义:char c[8]={\则下列语句中,不正确的是___。 A)puts (c); B)for(i=0;c[i]!= '\\0';i++) printf(\ C)printf (\ D)for(i=0;c[i]!= '\\0';i++) putchar( c ); (5)若定义a[ ][3]={0,1,2,3,4,5,6,7}; 则a数组中行的大小是___。 A)2 B)3 C)4 D)无确定值 (6)以下程序的运行结果是___。 #include A) ab c B)'a' 'b' C) abc D) ab (8)数组名作为参数传递给函数,作为实际参数的数组名被处理为___。 A)该数组长度 B)该数组元素个数 C)该函数中各元素的值 D)该数组的首地址 (9)当接受用户输入的含空格的字符串时,应使用函数__。 A)scanf( ) B)gets( ) C) getchar( ) D)getc( ) (10)执行下面的程序段后,变量k中的值为___。 int k=3, s[2]={1}; s[0]=k; k=s[1]*10; A)不定值 B) 33 C) 30 D) 0 (11)在定义 int a[5][4]; 之后;对a的引用正确的是___。 A)a[2][4] B) a[5][0] C)a[0][0] D)a[0,0] 2.程序填空 (1)以下程序用来检查二维数组是否对称(即:对所有i,j都有a[i][j]=a[j][i])。 #include { int a[4][4]={1,2,3,4, 2,2,5,6, 3,5,3,7, 8,6,7,4}; int i, j, found=0; for ( j=0; j<4; j++ ) { for (i=0; i<4; i++ ) if ( ___________________ ) { found= ___________________ ; break; } if (found) break; } if (found) printf (\不对称\\n\ else printf(\对称\\n\ return 0; } (2)给定一3 ×4的矩阵,求出其中的最大元素值,及其所在的行列号: int main( ) { int i,j,row=0,colum=0,max; static int a[3][4]={{1,2,3,4},{9,8,7,6},{10,-10,-4,4}}; _____________; for(i=0;i<=2;i++) for(j=0;j<=3;j++) { _____________; ____________; } printf(\} (3)以下程序的功能是从键盘上输入若干个字符(以回车键作为结束)组成一个字符数组,然后输出该字符数组中的字符串,请填空。 #include { char str[81]; int i; for ( i=0; i<80; i++ ) { str[i]=getchar( ); if (str[i]= ='\\n') break; } str[i]= ' \\0'; _____________; while ( str[i]!= ' \\0' ) putchar(_____________); } 3.阅读程序并写出运行结果 (1)写出下列程序的运行结果并分析之。 #include { static int a[4][5]={{1,2,3,4,0},{2,2,0,0,0},{3,4,5,0,0},{6,0,0,0,0}}; int j,k; for (j=0;j<4;j++) { for(k=0;k<5;k++) { if (a[j][k]= =0) break; printf(\ } } printf(\ return 0; } (2)写出下列程序的运行结果并分析。 #include { int a[6][6],i,j; for (i=1 ;i<6 ; i++) for ( j=1;j<6;j++) a[i][j]= i*j; for (i=1 ;i<6 ; i++) { for ( j=1;j<6;j++) printf( \ printf(\ } Return 0; } 4.读程序 (1)用循环移位法将数组num中的最后一个数移到最前面,其余数依次往后移一个位置。某同学设计程序代码如下: #include int i,tem,num[10]={0,1,2,3,4,5,6,7,8,9}; tem=num[9]; for(i=1;i<=10;i++) num[i]=num[i-1]; num[0]=tem; printf(\ for(i=0;i<10;i++) printf(\ return 0; }