请问这道C语言编程题怎么做?
经过在电脑上编程验证的。答案选B。
这是因为最开始x值为3,
首次执行printf函数中的x-=2后,值为1,输出为1
再执行while中的–x后值为0,
!0会使得循环再次执行一次,
再次执行printf中的x-=2后,值为-2.再输出一次-2。因为第一次执行printf没有换行,所以1和-2会连起来。
然后再次执行while条件中的–x,即-2再减1值为-3,不为0,会跳出循环。程序结束。
我想问下C语言里怎么设置Y\N之后,Y后继续执行之前的循环,N结束程序,求大神!
看不清你的图片,所以没法改。给你个建议:写个while(1){…}循环,把你要输入、输出的代码段写在{}中;设置一个退出的标记字符,比如#,不想再输入时就输入一个#,代码就退出了。用y/n也可以。
c语言程序设计例题
题目1
#include “stdio.h”
void main(void)
{
int n=5,m=10,i=1;
long sum=1;
for(;i=n;i++)
{
sum*=i;
}
printf(“\n5!=%d”,sum);
for(i=1;i=10;i++)
{
sum*=i;
}
printf(“\n10!=%d”,sum);
}
题目2
#include “stdio.h”
#include “string.h”
struct Student
{
char s_Name[25];
long n_Code;
int n_English;
int n_Math;
int n_Computer;
}student_1,student_2;
void main(void)
{
printf(“\nStudent1:\nName:”);
scanf(“%s”,student_1.s_Name);
printf(“StudentNum:”);
scanf(“%d”,student_1.n_Code);
printf(“English Score:”);
scanf(“%d”,student_1.n_English);
printf(“Math Score:”);
scanf(“%d”,student_1.n_Math);
printf(“Computer Score:”);
scanf(“%d”,student_1.n_Computer);
printf(“\nStudent2:\nName:”);
scanf(“%s”,student_2.s_Name);
printf(“StudentNum:”);
scanf(“%d”,student_2.n_Code);
printf(“English Score:”);
scanf(“%d”,student_2.n_English);
printf(“Math Score:”);
scanf(“%d”,student_2.n_Math);
printf(“Computer Score:”);
scanf(“%d”,student_2.n_Computer);
printf(“\nStudent1:\nName:%s\nStudent Number:%d\nEnglish Score:%d\nMath Score:%d\nComputer Score:%d\n”,student_1.s_Name,student_1.n_Code,student_1.n_English,student_1.n_Math,student_1.n_Computer);
printf(“\nStudent2:\nName:%s\nStudent Number:%d\nEnglish Score:%d\nMath Score:%d\nComputer Score:%d\n”,student_2.s_Name,student_2.n_Code,student_2.n_English,student_2.n_Math,student_2.n_Computer);
}
在C语言程序设计怎样实现程序计算完成后不退出,可以继续输入算式,进行计算?
我将main函数做了一些改动,加了一个char a用于接收用户输入的y或n,如果用户输入y,则清屏,然后用户可以开始进行算式输入,如果输入n则程序退出,如果输入其他字符无效。在用getch()函数时要添加一个头文件#include conio.h,之所以我用getch,是因为getch输入字符y或n后不用敲回车确定就可以,当然如果你想让用户输入y或n后再用回车确定的话,就把getch改成getchar就行了
void main()
{
double result;
char a;
FILE *data=fopen(“61590_4.dat”,”at”);
if(data==NULL)
data=fopen(“61590_4.dat”,”wt”);
if(data==NULL)
return;
NEXT:
token[n]=getchar();
result=exp();
if(token[n]==’\n’)
{
token[n]=’\0′;
printf(“%s=%g\n”,token,result);
fprintf(data,”%s=%g\n”,token,result);
}
else error();
printf(“按Y继续,按N结束\n”);
while(true)
{
a = getch();
if (a == ‘y’)
{
system(“cls”);
goto NEXT;
}
else if (a == ‘n’)
return;
}
fclose(data);
}
c语言计算器,若用户输入Y,则请用户还可以输入式子计算,若用户输入N,则退出程序
#include stdio.h//望采纳!!!
int main (void)
{
double a, b;
char ch,yn;
do{
fflush(stdin,NULL);
printf (“请输入运算式子:”);
scanf (“%lf%c%lf”, a, ch, b);
switch (ch)
{
case ‘+’:
{
printf (“%lf %c %lf = %lf\n”, a, ch, b, a + b);
break;
}
case ‘-‘:
{
printf (“%lf %c %lf = %lf\n”, a, ch, b, a – b);
break;
}
case ‘/’:
{
printf (“%lf %c %lf = %lf\n”, a, ch, b, a / b);
break;
}
case ‘*’:
{
printf (“%lf %c %lf = %lf\n”, a, ch, b, a * b);
break;
}
default:
{
printf(“式子输入错误!请以(数1+数2)这种格式输入!”);
}
}
fflush(stdin,NULL);
printf(“计算完毕!是否再次使用?y/n:”);
scanf (“%c”,yn);
if (yn==’y’ || yn==’Y’)
{
system(“cls”);
printf (“欢迎再次使用\n\n”);
continue;
}
printf(“感谢使用本计算器!本次服务到此结束!\n”);
break;
}while (1);
}
《C语言程序设计》练习题
一、选择题
1、C语言规定,在一个源程序中,main()函数的位置(C )。
A) 必须在最开始 B)必须在最后
C) 可以任意 D) 必须在系统调用的库函数后面
这题你死记就行,你看看这个
任何一个C++程序都必须定义一个main函数,它的返回类型总是int类型。这个函数由操作系统来调用,在main函
数执行完以后,程序也就终止了。 main也可以使用return向操作系统返回一个值,使用操作系统的命令可以检测
main的返回值。一般约定在main返回0时,表示程序运行过程中没有出现错误,其它非零值表示程序出现异常情况。
若没有为main指定返回值,这样返回值是任意的。
2、若x和y都是int 型变量,x=100,y=200,且有以下程序段,printf(“%d”,(x,y));则其输出结果是( A)。
A) 200 B) 100 C) 100 200 D) 输出不确定值
(x,y)这是个逗号表达式,表达式的值为最后一个逗号后面表达式的值,因为前面有一个%d,所以输出 的是y的
值
3、合法的C语法字符常量是(C )。
A) “A” B) 65 C) ‘\t’ D) A
字符都是由两个单引号括起来的,死记, a)为字符串
4、表达式“3!=4”的值是(A )。
A) 1 B) 0 C) T D) F
!=是c语言的逻辑运算符,3!=4为真,多以得1, 3=4为假,值为0
5、 int a=1,b=2,c=3,d=4,执行下列程序后x的值为( C)。
if(ab) x=1;else if (cd) x=2;else x=3;
A) 1 B) 2 C) 3 D) 4
如果ab,12为假,不执行x=1,执行else if(cd),判断:34为假,不执行x=2,执行=3,完
6、以下程序的输出结果是(D)。
Int x=10,y=3,z;printf(“%d\n”,z=(x%y,x/y));
A)1 B) 0 C) 4 D) 3
逗号表达式,x%y,10%3,商3余1,模取余数1,x/y,10/3,商3余1,除法取商3,逗号表达式,表达式的值为最后一
个逗号后面表达式的值
7、为表示x≥y≥z,应使用C语言表达式(A )。
A) (x=y)(y=z) B) (x=y) AND (y=z)
C) (x=y=z) D) (x=y) (y=z)
关系运算符,x=y与y=z必须是同时成立的,因此要用逻辑运算符,与的意思
8、合法的数组定义是( a )。
A) int a[ ]=”string”; B) int a[5]={0,1,2,3,4,5};
C) char a=”string”; D) char a[ ]={“01234”};
a不指定数组长度定义,正确
b数组长度为5,就是里面有5个数组元素,多了一个数组元素
c定义a不是数组而是一个变量,素组应该是a[]
d是错的,字符串是这样定义的:char a[ ]={‘0′,’1′,’2′,’3′,’4′,’\0’};
[4]中数字是数组长度,说明里面有几个元素
9、设x和y均为int型变量,则语句“x+=y;y=x-y;x-=y;”的功能是(D)。
A) 把x和y按从小到大排列 B)把x和y按从大到小排列
C)无确定结果 D)交换x和y中的值
x+=y等同于x=x+y,把x加y的值赋给x,x现在存的是x与y的和
y=x-y把x减y的值赋给y,x现在存的是x与y的和 (x+y)-y=x,把x的值给y,y存x的值
x-=y等同于x=x-y,把x减y的值赋给x,(x+y)-y=x,现在的后面的y存的是x的值,做完后x里存的值是y,完成交换
10、若已定义x和y为double类型,则表达式“x=1,y=x+3/2”的值是(C)。
A) 1 B)2 C) 2.0 D) 1.0
逗号表达式,先让x=1在算y=x+3/2,得2,因为是double类型,所以有小数点
11、下列条件语句中,功能与其他语句不同的是 (D)
A) if(a) printf(“%d\n”,x); else printf(“%d\n”,y);
B) if(a==0) printf(“%d\n”,y); else printf(“%d\n”,x);
C) if (a!=0) printf(“%d\n”,x); else printf(“%d\n”,y);
D) if(a==0) printf(“%d\n”,x); else printf(“%d\n”,y);
a 如果a为真输出x,如果a为假输出y
b 如果a==0,也就是为假,输出y,a为真输出x,同a
c 如果a!=0为真,输出x,a为假输出y同上
d 如果a为假输出x,如果a为真输出y,与以上的都不同
12、以下能正确定义二维数组的是 (C)
A) int a[][3]; B) int a[][3]=2{2*3};
C) int a[][3]={0}; D) int a[2][3]={{1},{2},{3,4}};
a 没有给数组赋初值
b {}里不能有*
c 正确,记住第一个[]中可以为空,第二个[]不能为空,死记
d a[2][3] 的意思是有两个一维数组,每个一维数组里有3个元素,{{1},{2},{3,4}}; 她的意思是三个数组,{}中的每一个{}代表一个数组,里边的数为数组元素
13、用C语言编写的代码程序 (B)
A)可立即执行 B)是一个源程序
C)经过编译即可执行 D)经过编译解释才能执行
死记