1、下列程序的运行结果是: 。main( ) { int ch1=0, ch2=5; if(ch1!=3) printf(“ch1:%d”,ch1); else printf(“ch2:%d”,ch2); } 2、下列程序的运行结果是: 。main() { int a=1,b=0; switch(a) { case 1: switch (b) { case 0: printf("**0**"); break; case 1: printf("**1**"); break; } case 2: printf("**2**"); break; } } 3、以下程序段的输出结果是 16 。main() { int i=0, sum=1; do { sum+=i++;} while(i<6); printf("%d\n", sum); } printf("%-7d",f[i]); 4、下面程序的运行结果是 35 。 main( ) { int m=7,n=5,i=1; do { if (i%m==0); if (i%n==0) { printf("%d\n",i); break;} i++; } while(i!=0); }
时间: 2024-04-21 12:26:28 浏览: 31
1. 运行结果为:ch1:0
2. 运行结果为:**0**
3. 运行结果为:16
4. 运行结果为:35
说明:
1. 因为ch1的初值为0,不等于3,所以输出ch1的值为0。
2. a的值为1,b的值为0,所以输出**0**。
3. sum的初值为1,i的初值为0,循环条件为i<6,所以sum先加1,然后i加1,sum再加i的值,i加1,以此类推,直到i=6时,循环结束,输出sum的值为16。
4. 循环中的第1个分号是空语句,不起任何作用,if后面的分号应该去掉,判断i是否能整除m和n,如果i能同时整除m和n,就输出i,并跳出循环。i的初始值为1,不断加1,直到i等于0时跳出循环。在i等于35时,同时能被7和5整除,所以输出35。
相关问题
已知裴波那契数列:1 1 2 3 5 8 13 21 34 55 ……,现在要求用数组存放前 n 个数,并且输出所有的数,每行输出 5 个。 请将带序号的空填写完整,每个空填写一个表达式或语句,使得程序正确运行。 #include<stdio.h> int main() { int f[25],n,i; scanf("%d",&n); f[0]=1; (6) for( (7) ; i<n; i++) f[i]= (8) +f[i-2]; //第 i+1 个数据 for(i=0;i<n;i++) { if( (9) %5==0) printf("\n"); } return 0; } 二、写结果题(每小题 4 分,共 20 分) 1、下列程序的运行结果是: 。main( ) { int ch1=0, ch2=5; if(ch1!=3) printf(“ch1:%d”,ch1); else printf(“ch2:%d”,ch2); }
这是一道填空题,我来帮你完成它:
```
#include<stdio.h>
int main() {
int f[25],n,i;
scanf("%d",&n);
f[0]=1; // 填空1:把空白处改为 1
f[1]=1; // 填空2:把空白处改为 1
for(i=2; i<n; i++) f[i]=f[i-1]+f[i-2]; // 填空3:把空白处改为 f[i-1]+f[i-2]
for(i=0; i<n; i++) {
if(i%5==0) printf("\n"); // 填空4:把空白处改为 i%5==0
printf("%d ",f[i]); // 填空5:把空白处改为 %d 和 f[i]
}
return 0;
}
```
在填空1和2处,把空白处改为 `1`,是为了给数组 f 赋初始值。在填空3处,把空白处改为 `f[i-1]+f[i-2]`,是为了计算第 i 个斐波那契数。在填空4处,把空白处改为 `i%5==0`,是为了每行输出 5 个数。在填空5处,把空白处改为 `%d` 和 `f[i]`,是为了输出数组中的每个元素。
二、答案
1、程序的运行结果是:ch1:0。因为 ch1 的值为 0,不等于 3,所以会执行第一个 printf 语句。
#include <stdio.h> int main() { FILE* fp; char ch = '\0', ch1 = '\0', ch2 = '\0'; int Part[6] = { 0 }, targetPart = 0,lines ,readedLines = 0; Part[0] = 5; scanf("%d", &targetPart); fp=fopen("dict.dic", "r"); fscanf(fp, "%d\n%d\n%d\n%d\n%d\n", Part + 1, Part + 2, Part + 3, Part + 4, Part + 5); lines = Part[targetPart]-Part[targetPart-1]; if (targetPart != 1){ char tem[99999]; for (int j = 0; j < Part[targetPart-1]-5; ++j) { fgets(tem,99998,fp); } } while (ch != EOF&&readedLines < lines) { ch = fgetc(fp); if (feof(fp)) return 0; if (ch == '/') { ch1 = ch; ch2 = fgetc(fp); if ( ch2 == '') { while (!feof(fp)) { ch2 = fgetc(fp); if (ch1 == '' && ch2 == '/') { ch1 = '\0'; ch2 = '\0'; ch = ch2; break; } ch1 = ch2; if (ch2 == '\n') { readedLines++; } if (readedLines > lines) return 0; } } else if ( ch2 == '/') { while (!feof(fp)) { ch = fgetc(fp); if (ch == '\n') { ch = '\0'; ch1 = '\0'; ch2 = '\0'; readedLines++; printf("\n"); break; } } } else { printf("%c%c", ch1, ch2); } } else { printf("%c", ch); } if (ch == '\n' || feof(fp) == -1) readedLines++; } fclose(fp); return 0; }给出每行注释
这是一个C语言程序,下面是每行的注释:
```c
#include <stdio.h> // 包含标准输入输出库的头文件
int main() { // 主函数
FILE* fp; // 文件指针
char ch = '\0', ch1 = '\0', ch2 = '\0'; // 用于读取文件中的字符
int Part[6] = { 0 }, targetPart = 0,lines ,readedLines = 0; // Part数组存储文件中每个部分的起始位置和行数,targetPart表示要读取的部分,lines表示该部分的行数,readedLines表示已读取的行数
Part[0] = 5; // Part数组的第一个元素为5
scanf("%d", &targetPart); // 从标准输入读取目标部分的序号
fp=fopen("dict.dic", "r"); // 打开文件dict.dic,以只读方式打开
fscanf(fp, "%d\n%d\n%d\n%d\n%d\n", Part + 1, Part + 2, Part + 3, Part + 4, Part + 5); // 读取文件中Part数组的值
lines = Part[targetPart]-Part[targetPart-1]; // 计算目标部分的行数
if (targetPart != 1){ // 如果目标部分不是第一部分
char tem[99999]; // 定义临时字符数组
for (int j = 0; j < Part[targetPart-1]-5; ++j) { // 跳过前面的部分
fgets(tem,99998,fp); // 读取一行字符
}
}
while (ch != EOF&&readedLines < lines) { // 循环读取文件中的字符,直到读取完目标部分的所有行
ch = fgetc(fp); // 读取一个字符
if (feof(fp)) return 0; // 如果到达文件结尾,则结束程序
if (ch == '/') { // 如果是注释符号
ch1 = ch; // 将注释符号赋值给ch1
ch2 = fgetc(fp); // 读取下一个字符
if ( ch2 == '') { // 如果下一个字符为空
while (!feof(fp)) { // 循环读取文件中的字符
ch2 = fgetc(fp); // 读取一个字符
if (ch1 == '' && ch2 == '/') { // 如果连续两个字符都是注释符号
ch1 = '\0'; // 清空ch1
ch2 = '\0'; // 清空ch2
ch = ch2; // 将下一个字符赋值给ch
break; // 跳出循环
}
ch1 = ch2; // 将ch2赋值给ch1
if (ch2 == '\n') { // 如果是换行符
readedLines++; // 已读取的行数加1
}
if (readedLines > lines) // 如果已读取的行数大于目标部分的行数
return 0; // 结束程序
}
} else if ( ch2 == '/') { // 如果下一个字符仍然是注释符号
while (!feof(fp)) { // 循环读取文件中的字符
ch = fgetc(fp); // 读取一个字符
if (ch == '\n') { // 如果是换行符
ch = '\0'; // 清空ch
ch1 = '\0'; // 清空ch1
ch2 = '\0'; // 清空ch2
readedLines++; // 已读取的行数加1
printf("\n"); // 输出换行符
break; // 跳出循环
}
}
} else { // 如果下一个字符不是注释符号
printf("%c%c", ch1, ch2); // 输出连续的两个字符
}
} else { // 如果不是注释符号
printf("%c", ch); // 输出该字符
}
if (ch == '\n' || feof(fp) == -1) // 如果是换行符或到达文件结尾
readedLines++; // 已读取的行数加1
}
fclose(fp); // 关闭文件
return 0; // 程序结束
}
```