#include <stdio.h>
void main()
{
int a = 12, b = 12;
printf("%d,%d\n", --a, ++b);
}
A. 10,10
B. 12,12
C. 11,10
D. 11,13
32. 有以下语句:int x = 10; x += 3 + x % (3) ,则 x 的值是(A)
A. 14
B. 15
C. 11
D. 12
33.若 d 为 double 型变量,则表达式 d = 1 ,d + 5 ,d++的值是(C)
A. 1
B. 6.0
C. 2.0
D. 1.0
34. 表达式 5!= 3 的值是(D)
A. T
B. 非零值
C. 0
D. 1
35. 若有定义 int a = 12,n = 5,则表达式 a % = (n % 2),运算后,a 的 值(A)
A. 0
B. 1
C. 12
D. 6
36.若有定义 int x = 3,y = 2 和 float a = 2.5,b = 3.5,则表达式: (x + y) % 2 + (int) a / (int) b 的值是(D)
A. 0
B. 2
C. 1.5
D. 1
37、在C语言中,以下叙述不正确的是(A)
A. 在C程序中,无论是整数还是实数,都能被准确无误的表示
B. 在C程序中,变量名代表存储器中的一个位置
C. 静态变量的生存期与整个程序的生存期相同
D. C语言中变量必须先定义后引用
38.C语言中的变量名只能由字母,数字和下划线三种字符组成.且第一个字符(C)
A. 必须为字母
B. 必须为下划线
C. 必须为字母或下划线
D. 可以是字母,数字或下划线中的任意一种
39.设有说明: char w ; int x ; float y ; double z;则表达式: w * x + z - y 值的数据类型是(D)
A. float
B. char
C. int
D. double
40、一个C语言的执行是从(A)
A. 本程序的主函数开始,到本程序的主函数结束
B. 本程序的第一个函数开始,到本程序的最后一个函数结束
C. 本程序的主函数开始,到本程序的最后一个函数结束
D. 本程序的第一个函数开始,到本程序的主函数结束
41.设a为整型变量,不能正确表达数学关系10<a<15的C语言表达式是
A. 10<a<15
B. a==11 || a==12 || a==13 || a==14
C. a>10&&a<15
D. !(a<=10)&&!(a>=15)
42.下列程序执行后的输出结果是(C)
#include <stdio.h>
void main()
{
int a = 5, b = 60, c;
if (a < b)
{
c = a * b;;
printf("%d*%d=%d\n", b, a, c);
}
else
{
c = b / a;
printf("%d/%d=%d\n", b, a, c);
}
}
A. 60 / 5 = 12
B. 300
C. 60 * 5 = 300
D. 12
43.如果c为字符型变量,判断c是否为空格,(假设已知空格 ASCI码为32)不能使用(C)
A. if (c == '32')
B. if (c == 32)
C. if (c == '\40')
D. if(c == ' ')
44. 运行下面程序时,若从键盘输入"3,5<CR>",则程序的输出结果是(C)
#include <stdio.h>
void main()
{
int x, y;
scanf_s("%d,%d", &x, &y);
if (x == y)printf("x==y");
else if (x > y)printf("x > y");
else printf("x<y");
}
A. 3 < 5
B. 5 > 3
C. x > y
D. x < y
45.运行下面的程序时,若从键盘输入数据为“6,5,7<CR>",则输出结果是(C)
#include <stdio.h>
void main()
{
int a, b, c;
scanf_s("%d,%d,%d", &a, &b, &c);
if (a > b)
if (a > c)
printf("%d\n", a);
else
printf("%d\n", c);
else if (b > c)
printf("%d\n",b);
else printf("%d\n", c);
}
A. 5
B. 6
C. 7
D. 不确定值
46.执行下面程序时,若从键盘输入”2<CR>",则程序的运行结果是(A)
#include <stdio.h>
void main()
{
int k;
char cp;
cp = getchar();
if (cp >= '0' && cp <= '9')
k = cp - '0';
else if (cp >= 'a' && cp <= 'f')
k = cp - 'a' + 10;
else k = cp - 'A' + 10;
printf("%d\n", k);
}
A. 2
B. 4
C. 1
D. 10
47.运行下面程序时,从键盘输入“2.0<CR>",则输出结果是(B)
#include <stdio.h>
void main()
{
float a, b;
scanf_s("%f", &a);
if (a < 0.0)
b = 0.0;
else if ((a < 0.5) && (a != 2))
b = 1.0 / (a + 2.0);
else if (a < 10.0)
b = 1.0 / 2;
else b = 10.0;
printf("%f\n", b);
}
A. 0.000000
B. 0.500000
C. 1.000000
D. 0.250000
48.执行下面程序后,运行结果是(A)
#include <stdio.h>
void main()
{
int x = 41, y = 1;
if (x % 3 == 0 && x % 7 == 0)
{
y += x;
printf("y=%d\n", y);
}
else
{
y = x;
printf("y=%d", y);
}
}
A. y=41
B. y=43
C. y=42
D. y=1
49.运行下面程序时,从键盘输入”12,34,9<CR>",则输入结果是(C)
#include <stdio.h>
void main()
{
int x, y, z;
scanf_s("%d,%d,%d", &x, &y, &z);
if (x < y)
if (y > z)
printf("%d\n", z);
else
printf("%d\n", y);
else if (x < z)
printf("%d\n", z);
else
printf("%d\n", x);
}
A. switch (grade) case 'A': printf("85--100\n"); case 'B': printf("60--84\n"); case 'C': printf("60以下\n"); default: printf("等级错误!"\n);
B. switch (grade) case 'A': printf("85--100\n"); break; case 'B' : printf("60--84\n"); case 'C': printf("60以下\n"); default: printf("等级错误!"\n);
C. switch (grade) case 'A': printf("85--100\n"); break; case 'B': printf("60--84\n"); break; case 'C': printf("60以下\n"); default: printf("等级错误!"\n);
D. switch (grade) case 'A': printf("85--100\n"); break; case 'B': printf("60--84\n"); break; case 'C': printf("60以下\n"); break; default: printf("等级错误!"\n);
58.能够完成如下函数计算的程序段是(B)
A. y = 1; if (x != 1) if (x > 0) y = 1; else y = 0;
B. if (x >= 0) if (x > 0) y = 1; else y = 0; else y = -1;
C. y = 0; if (x >= 0) if (x > 0) y = 1; else y = 0;
D. y = -1; if (x > 0) y = 1; else y = -1;
59.有如下程序,该程序的输出结果是(C)
#include <stdio.h>
void main() {
float x = 5.0, y;
if (x < 0.0)
y = 0.0;
else if (x < 10.0)
y = 1.0 / x;
else
y = 1.0;
printf("%f\n", y);
}
A. 0.000000
B. 0.50000
C. 0.200000
D. 1.000000
60.以下程序的执行结果是(B)
#include <stdio.h>
void main() {
int x = 1, y = 0;
switch (x) {
case 1: switch (y) {
case 0: printf("first\n"); break;
case 1: printf("second\n"); break;
}
case 2: printf("third\n");
}
}
A. first second
B. first third
C. first
D. second third
61.以下程序的执行结果是(A)
#include <stdio.h>
void main() {
int a, b, c, d, x;
a = c = 0;
b = 1;
d = 20;
if (a) d = d-10;
else if (!b) {
if (!c) x = 15;
else x = 25;
}
printf("d=%d\n", d);
}
A. d=20
B. d=10
C. d=15
D. 25
62.有如下程序,该程序的输出结果是(C)
#include <stdio.h>
void main() {
int a = 2, b = -1, c = 2;
if (a > b) {
if (b < 0)
c = 0;
else
c++;
}
printf("%d\n", c);
}
A. 0
B. 1
C. 2
D. 3
63.下列程序执行后的输出结果是(B)
#include <stdio.h>
void main() {
int x, y=1, z;
if ((z = y)< 0)
x = 4;
else if (y == 0)
x = 5;
else
x = 6;
printf("%d,%d\n", x, y);
}
A. 4,1
B. 6,1
D. 5,0
D. 出错信息
64. 有如下程序,该程序的输出结果是(A)
#include <stdio.h>
void main() {
int x = 1, a = 0, b = 0;
switch (x) {
case 0: b++;
case 1: a++;
case 2: a++; b++;
}
printf("a=%d,b=%d\n", a, b);
}
A. a=2,b=1
B. a=1,b=1
C. a=1,b=0
D. a=2,b=2
65.下面程序的输出结果是(C)
#include <stdio.h>
void main() {
int a = -1, b = 1, k;
if ((++a > 0) && (b-- <= 0))
printf("%d %d\n", a, b);
else
printf("%d %d\n", b, a);
}
A. -1 1
B. 0 1
C. 1 0
D. 0 0
66.假定 w、x、y、z、m 均为 int 型变量,有如下程序段,则该程序执行后,M的值是(D)
w = 1; x = 2; y = 3; z = 4;
m = (w < x) ? w : x;
m = (m < y) ? m : y;
m = (m < z) ? m : z;
A. 4
B. 3
C. 2
D. 1
67.以下程序的输出结果是(D)
void main() {
int a = 100;
if (a > 100)
printf("%d\n", a > 100);
else
printf("%d\n", a <= 100);
}
A. a<=100
B. 100
C. 0
D. 1
68.若执行下面的程序从键盘上输入9,则输出结果是(B)
#include <stdio.h>
void main() {
int n;
scanf_s("%d", &n);
if (n++ < 10)
printf("%d\n", n);
else
printf("%d\n", n--);
}
A. 11
B. 10
C. 9
D. 8
二、程序填空题
3.统计整数 n 的各个位上出现数字1,2,3的次数,并通过外部(全局)变量c1,c2,c3返回主函数。例如,当n=123114350时,结果应该为:c1=3 c2=1 c3=2。
#include <stdio.h>
int c1, c2, c3;
void fun(long n)
{
c1 = c2 = c3 = 0;
while (n)
{
switch (n%10)
{
case 1:
c1++;
break;
case 2:
c2++;
break;
case 3:
c3++;
break;
}
n /= 10;
}
}
void main() {
int n = 123114250;
fun(n);
printf("\nn=%d c1=%d c2=%d c3=%d\n", n, c1, c2, c3);
}
#include <stdio.h>
void main()
{
int n, m;
int sum;
sum = 0;
printf("\nInput n,m\n");
scanf_s("%d,%d", &n, &m);
while (n <= m)
{
sum += n;
n++;
}
printf("sum=%d\n", sum);
}
#include <stdio.h>
void main()
{
int sum = 0; //声明一个变量用来统计总和
int n,m;
scanf_s("%d,%d", &n, & m); //接收键盘输入的n和m值
for (;n <= m; n++) //从n开始循环,一直循环到m结束
{
sum += n; //统计每次循环得到的数
}
printf("%d", sum);
}
import java.util.Scanner;
/**
* @author sunny
*/
public class Test{
public static void main(String[] args) {
int sum =0;
Scanner sc =new Scanner(System.in);
int n=sc.nextInt();
int m=sc.nextInt();
for(;n<=m;n++){
sum+=n;
}
System.out.println("sum="+sum);
}
}
14.查找N在数组a中最后一次出现的位置(数组首元素的位置为零),例如:如果a数组中的元素为:1,5,2,5,6,8,7,4,3,0,当 n=5 时,程序的输出结果为:5 is NO 3。当 n=10 ,程序的输出结果应为:10 not found !
#include <stdio.h>
void main()
{
int a[10] = { 1,5,2,5,6,8,7,4,3,0 };
int i, k, n, f = 0;
scanf_s("%d", &n);
for ( int i = 0; i <10; i++)
{
if (a[i] == n) {
f = 1;
k = i;
}
}
if (f) {
printf("%d is NO. %d\n", n, k);
}
else {
printf("%d not found!\n", n);
}
}
题目解析(点击查看我的思路)
来说一下题目原本的解题思路,首先定义了一个整型变量 F 来作为布尔值,接着遍历数组,如果找到了则更新索引(k)和布尔值(f),接着通过 f 来判断是否找到,个人感觉这一步就有点多余了!
然后来说一下我的思路,定义一个 index 变量来记录索引的值,这里有个细节,为什么给了初始变量 -1 呢?因为我们知道数组的索引里不存在负数的索引,接着遍历数组,如果找到了则更新索引值,接着我们可以直接去判断 index 是否为 -1 ,如果为 - 1 ,则表示没有找到!