1. c语言一个简单问题
//你要先判断能不能构成三角形,如果能,再判断是等腰还是等边又或者是普通。
//我改了下你的代码,应该没错了。你运行下。如果有什么问题请追加
#include"stdio.h"
main()
{
int
a,b,c;
printf("请输入第一个边:");
scanf("%d",&a);
printf("请输入第二个边:");
scanf("%d",&b);
printf("请输入第三个边:");
scanf("%d",&c);
if(a+b>c&&a+c>b&&b+c>a)
{
if(a==b
&&
b==c)
{
printf("是等边三角形\n");
}
else
if(a==b
||
b==c
||
c==a)
{
printf("是等腰三角形\n");
}
else
{
printf("是普通三角形\n");
}
}
else
{
printf("不能构成三角形\n");
}
}
2. 关于c语言的一个问题
FOR循环如不带括号,默认只执行FOR之下的一句代码,如带括号,则每次执行括号里的.
例for(int
i
=
0;i
<
2;i++)
cout
<<"a"
<<endl;
cout
<<"b"
<<endl;
结果为:a
a
b
带括号的:
for(int
i
=
0;i
<
2;i++)
{
cout
<<"a"
<<endl;
cout
<<"b"
<<endl;
}
结果为:a
b
a
b
双层循环道理是一样的
例:
for(int
i
=
0;i
<
2;i++)
for(int
j
=
0;j
<
2;j++)
cout
<<"a"
<<endl;
cout
<<"b"
<<endl;
结果为:a
a
a
a
b
带括号的:
for(int
i
=
0;i
<
2;i++)
{
for(int
j
=
0;j
<
2;j++)
{
cout
<<"a"
<<endl;
cout
<<"b"
<<endl;
}
}
结果为:a
b
a
b
a
b
a
b
又如:for(int
i
=
0;i
<
2;i++)
for(int
j
=
0;j
<
2;j++)
{
cout
<<"a"
<<endl;
cout
<<"b"
<<endl;
}
结果和上面那个是一样的
3. 一个关于C语言的问题
#include <stdio.h>
int main()
{
char c;
int alpha=0,digit=0;
while(scanf("%c",&c)==1)
{
if('0'<=c&&c<='9')
digit++;
else if('a'<=c&&c<='z'||'A'<=c&&c<='Z')
alpha++;
}
printf("%d %d ",alpha,digit);
return 0;
}
4. 一个C语言的经典问题
注意,在printf("ASDF\n");后面是没有return的,也就是说fun()这个执行完了以后,没有明确的一个返回值。
这时候就得看C语言编译器的实现了。通常大部分编译器在Intel
CPU上,把函数的返回值放在eax寄存器中。也就是说,你最后printf("%d\n",
a),打印的就是fun()函数在函数最后,eax寄存器的值。
而这个eax值是多少呢?由于在函数返回以前,有一个printf()调用,这个函数的返回值就是打印的字符数量,ASDF\n一共是5个字符,所以printf返回5,所以,在printf("ASDF\n")执行完以后,eax寄存器中的值是5,而这个5随着eax被返回到了主函数,这样最后也就打印出5了。
5. 一个c语言问题
你的结构体中,
int num;
char name[10];
char sex;
char job;
sex和job是字符类型,输入输出的时候应该用“%c”格式控制字符,不应用“%s”。
其次,name是字符数组类型,输入的时候变量名前不要带&,因为它本身就是指针。如scanf("%s",person[i].name);
另外建议sex和job也都改成字符数组类型,否则可能会出现输入错误,你可以自己试试。
不明白再问我。
6. c语言常见问题有哪些
1.书写标识符时,忽略了大小写字母的区别。
main()
{
int
a=5;
printf("%d",A);
}
编译程序把a和A认为是两个不同的变量名,而显示出错信息。C认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。
2.忽略了变量的类型,进行了不合法的运算。
main()
{
float
a,b;
printf("%d",a%b);
}
%是求余运算,得到a/b的整余数。整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。
3.将字符常量与字符串常量混淆。
char
c;
c="a";
在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C规定以“\”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:‘a'和‘\',而把它赋给一个字符变量是不行的。
4.忽略了“=”与“==”的区别。
在许多高级语言中,用“=”符号作为关系运算符“等于”。如在BASIC程序中可以写
if
(a=3)
then
…
但C语言中,“=”是赋值运算符,“==”是关系运算符。如:
if
(a==3)
a=b;
前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。
5.忘记加分号。
分号是C语句中不可缺少的一部分,语句末尾必须有分号。
a=1
b=2
编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。
{
z=x+y;
t=z/100;
printf("%f",t);
}
对于复合语句来说,最后一个语句中最后的分号不能忽略不写(这是和PASCAL不同的)。
6.多加分号。
对于一个复合语句,如:
{
z=x+y;
t=z/100;
printf("%f",t);
};
复合语句的花括号后不应再加分号,否则将会画蛇添足。
又如:
if
(a%3==0);
I++;
本是如果3整除a,则I加1。但由于if
(a%3==0)后多加了分号,则if语句到此结束,程序将执行I++语句,不论3是否整除a,I都将自动加1。
再如:
for
(I=0;I<5;I++);
{scanf("%d",&x);printf("%d",x);}
本意是先后输入5个数,每输入一个数后再将它输出。由于for()后多加了一个分号,使循环体变为空语句,此时只能输入一个数并输出它。
7.输入变量时忘记加地址运算符“&”。
int
a,b;
scanf("%d%d",a,b);
这是不合法的。Scanf函数的作用是:按照a、b在内存的地址将a、b的值存进去。“&a”指a在内存中的地址。
8.输入数据的方式与要求不符。①scanf("%d%d",&a,&b);
输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法:
3,4
输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键tab。
②scanf("%d,%d",&a,&b);
C规定:如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。下面输入是合法的:
3,4
此时不用逗号而用空格或其它字符是不对的。
3
4
3:4
又如:
scanf("a=%d,b=%d",&a,&b);
输入应如以下形式:
a=3,b=4
9.输入字符的格式与要求不一致。
在用“%c”格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入。
scanf("%c%c%c",&c1,&c2,&c3);
如输入a
b
c
字符“a”送给c1,字符“
”送给c2,字符“b”送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔。
10.输入输出的数据类型与所用格式说明符不一致。
例如,a已定义为整型,b定义为实型
a=3;b=4.5;
printf("%f%d\n",a,b);
编译时不给出出错信息,但运行结果将与原意不符。这种错误尤其需要注意。
7. C语言基本问题有哪些
一、C语言规定总是从main()开始执行的(这个函数也叫“主函数”)。因此,你发来的题目中的(1、6、8)叙述都是错误的,都应该选择F。x0dx0a二、第2题中,C语言对其数据在内存中所占用的实际字节数,随着程序中声明的数据类型以及数据的多少而变化,C语言本身并没有明确规定。这题应该选F。x0dx0ax0dx0a三、第3题,C语言中强制类型转换,仅对转换的语句有效,而不会改变所转换变量的原有数据类型,这是正确的,应该选T。x0dx0ax0dx0a四、第4题,i=8,j=10;printf("%d,%d,%d,%d\n",i,j,++i,j++);实际上是一个程序执行类题目,执行这一句时,先取得ij变量的值,其中有一个++i(先自增),一个j++(后自增),先自增的i先加上1,也就是i=8+1=9,而后自增的j在打印之后再加1,所以打印时仍是j=10。所以打印出来是:9 10 9 10。这是正确的。x0dx0ax0dx0a五、第5题“C语言中放在“”之间的内容都被视为字符串的一个构成部分,都可以在屏幕上原样显示”的说法是错误的。举一个例子就可以了:print("%d",8);是打印不出来%d的,它只能打印出来8。所以它是错的。x0dx0ax0dx0a六、第7题,设x、t均为int型变量,则执行语句"x = 10;t = x && x >10;"后,t的值为,这个题目好似没有写完,成了填空题了,现在来看计算过程,t = x && x >10,根据计算的优先级,>号是6级,&&是11级,先计算x >10,因为x=10,故x>10是不成立的,所以它的值是0,第二步再计算x && 0=10 && 0=0。t的值最后应该是0。x0dx0a希望对你有所帮助。
8. 一个C语言问题
应该这样子,只需要计算富翁的收入就行了 不需要管陌生人的,无视一个月是38天吧。。。 另外 一分确实是0.01元。。。不是0.001
#include<stdio.h>
int main()
{
int i;
double sumfu=0,y=0.01,m;
scanf("%lf",&m);
for(i=1;i<=38;i++)
{
sumfu=sumfu+m-y;
y=y*2;
if(sumfu<0 ){printf("%d",i); getch();exit(0);}/*只要富翁的收入小于0 ,就说明他开始亏了*/
}
}