c语言求答案!急!急!急!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言求答案!急!急!急!相关的知识,希望对你有一定的参考价值。
三、简答题(本大题共4小题,每小题4分,共16分)
26.简述下列程序段所完成的功能。
m=a;
if(b>c)
if(m<b) m=b;
else
if(m<c) m=c;
27.请写出whlie语句的一般形式及其执行过程。
28.回答下列问题:
(1)定义一个有10个元素的整型数组num,且用0,1,2,3,4,5,6,7,8,9依次初始化num的
各个对应元素;
(2)定义一个整型指针变量nptr,并且让其指向数组num的首个元素;
(3)假设nptr已指向num数组的首个元素,nptr+8是什么? *(nptr+8)又是什么?
(4)假设nptr指向num[5],nptr- =4指向哪个元素?
29.设有说明:
struct island
int id;
char name[16];
float area;
;
struct island x=215,〃xishayundao〃,2067.25, * p=&x;
分别写出用p输出变量id,area的值和字符数组name的值的C语句。
四、阅读分析题(本大题共6小题,每小题5分,共30分)
30.已知字母A和a的ASCII码分别是65和97,请写出下面程序的运行结果。
# include 〃stdio.h〃
main( )
int k=97;
putchar(k);
putchar(’\ n’);
printf(〃%d,%c,%o\n〃,k,k-32,k);
31.说明下面程序的功能以及程序的运行结果。
# include 〃stdio.h〃
main( )
char ch=’a’;
while(ch<=’z’)
printf(〃%c〃,ch+ +);
printf(〃\n〃);
32.阅读下面的程序并回答问题:
# include 〃stdio.h〃
main( )
int a[ ]=2,4,6,x=8,y=0,z;
while(y<3)
z=(a[y]<x)? a[y]∶x;
y+ +;
printf(〃% \ n〃,z);
(1)循环体被执行了几次?
(2)请写出程序的运行结果。
33.阅读分析下面程序后,写出程序的运行结果。
# include 〃stdio.h〃
int change (int x,int y);
main( )
int a=5,b=8;
change(a,b);
printf(〃a = %d,b = %d \ n〃,a,b);
int change(int x, int y)
int t;
t=x;x=y;y=t;
printf(〃x = % d,y = % d \ n〃,x,y);
26.功能:求a,b,c中的最大值。首先把a的值赋给m,当b大于c时,m(即a)与
与a比较,当m小于b是,把b的值赋给m,后面一样的道理。
27.while(表达式1;表达式2;表达式3)表达式4;
其中表达式1,2,3,4都可以省略,但是分号不能够
省略;当表达式2的值为真的时候执行表达式4,若为假,则跳出while循环
执行后面的语句。
28.(1)
int num[10];
num[10]=0,1,2,3,4,5,6,7,8,9;
(2)
int num[10],*nptr;
num[10]=0,1,2,3,4,5,6,7,8,9;
nptr=num;
(3)
nptr+8是指num[7]的地址值;*(nptr+8)是指元素num[7],即*(nptr+8)==num[7]
(4)
nptr- =4指向元素num[1]的地址
29.
printf("id=%d\tnum=%s\tarea=%f\n",p->id,p->name,p->area);
30.
a
97,A,141
31.
结果:abcdefghijklmnopqrstuvwxyz
功能:通过while语句输出a到z的小写字母
32.
3次
结果:8
33.
x=8,y=5
a=5,b=8
做了差不多有一个小时,好累 参考技术A 大学里最痛恨的就是语言 参考技术B 太多了,懒得回答了 参考技术C 虽然是很简单的题,不过让你明白基础的语法来说,这些题还是值得做的 参考技术D 太长了. 第5个回答 2012-07-12 真知灼见
斩钉截铁
食肉寝皮
GhDQ
急,急,急!!!!C语言判断输入的两个操作数数是不是是数字。(可以为负数),望高手赐教,不胜感激!!!
C语言判断输入的两个操作数数是否是数字。(可以为负数)
比如
#include "stdio.h"
void main()
double num1,num2,result;
char op;
printf("Please input an expression.Ex:1+2");
input:scanf("%f%c%f",&num1,&op,&num2);
if(//就是这里如何判断呢?判断它如果是数字,就进行运算,可以为负数)
switch(op)
case '+': result=num1+num2;
break;
case '-':result=num1-num2;
break;
case '*':result=num1*num2;
break;
case '/':
if(num2!=0)
result=num1/num2;
else
printf("error,input again:");
fflush(stdin);
goto input;
break;
case '%': if(num2!=0)
result=(int)num1%(int)num2;
else
printf("error,input again:");
fflush(stdin);
goto input;
break;
}
printf("%.2lf%c%.2lf=%.2lf",num1,op,num2,result);
goto input; //让程序可以不断执行
else
printf("Error expression,the operator must be numbers!,try again:");
fflush(stdin);
goto input;
判断函数是这个isdigit(),括号内为变量,是数字返回值为真,不是则为假
应该不能,抱歉。这个函数是字符判断函数,分析其ascii码是否在48到57之间,也就是0到9.
如果要实现你所说的,还要再多写一些函数。
对了,用数字转字符串函数,然后在一一判断书不是数字一级负号。 参考技术A 这里的num1和num2是双精度数据类型的变量,你按照%f格式读入数据,无论你输入的数据是什么,系统都是按数值读进来的,只是如果你给的数据类型不对,读进来的数据值是错误的,但是在num1,num2变量当中的内容一定数值,这是不用判断的。
可能你可以判断一下op中的内容是不是+-*/? 参考技术B //判断输入的函数
int keyinput()
char input[20]; //定义字符串接收输入,输入字符也不会错
int i=0;
scanf("%s",input); //接收输入
for(i;i<strlen(input);i++) //strlen 函数在 string.h
//isdigit 函数在 ctype.h 在vc++6.0中 isdigit() 如果是数字返回4
if(isdigit(input[i])!=4)
return 9999;//如果不是数字返回 9999 (这个自己定)
return atoi(input);//返回输入的值
说明:以上代码为代码段,如果使用的引用 (在文件最上方加上:#include “ctype.h” #include"string.h");
引用此函数,只用 调用 " 定义的int 型变量=keyint() "即可;
参考资料:自产
以上是关于c语言求答案!急!急!急!的主要内容,如果未能解决你的问题,请参考以下文章