当前位置:首页 » 编程语言 » c语言读程序题求解
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言读程序题求解

发布时间: 2022-08-07 02:56:10

c语言读程序的5道题,有答案,泪求详细的解析啊

因为"=="是判断等号两边的值是否相等的语句。

c语言中的“=”是赋值,“==”才是判断。

等号左边是x,它的值为3,右边是y+z,因为"+"的运算优先级大于"=="所以先执行y+z,得到表达式的值为1+0=1.

所以if(x==y+z)等价于判断if(3==1),"3==1"的返回值自然是false

于是不执行if()语句下的语句,而是执行else中的printf("+++");

所以最后的输出是+++


啊,是五道题啊...不是第五题...

没看清楚,不好意思。

等下补答


1. 前缀"--"和后缀"--"的区别:前缀返回的是值改变之后的值,后缀返回的是改变之前的值。

所以输出的一个是后缀的10,一个是前缀的9.

当然如果你再printf("%d,%d",x,y);就都输出9了。


2. 因为x,y,z都是整型变量,所以x/y的返回值是整除的值,也就是商。

10/3=3余1,而%相当于mod,也就是10对3取模。取模运算只能对整数进行。

在两个数都是正整数的时候就等于除法的余数,也就是1。

z=(x/y)是赋值语句返回的值就是改变后的z。


3.可以看到,它printf的是两个表达式的值。而且是两个逻辑表达式。

第一个是(a+b>c && b==c)“&&”表示且,也就是当两个都为真的时候返回true,任意一个为假,返回false,可以看到a+b>c是true,而b==c是false,所以返回值是false,因为是以整数形式输出,那么就是true=1,false=0.

第二个式子是c>b>a,c语言中没有连比,这个式子会从左算到右。即(c>b)>a。

其中c>b是true,因为要和a这个整型变量比,所以会强制转int变成1,然后1>a返回值就是false了。


4.也是前置和后置的问题。m=++i 返回的是i=i+1之后的值。也就是6,n=j--返回的是变化之前的值就是12.



Ⅱ c语言读程序题求解析

意思是删除字符串str1的最后一个字符。 比如:
char str1[]="abc";
则strlen(str1)等于3,strlen(str1)-1等于2。str1[strlen(str1)-1]='\0';即str1[2]='\0';字符串str1变成了"ab",puts(str1);或printf("%s",str1);将输出"ab"。strlen(str1);等于2。

Ⅲ C语言函数读程序题目求解!

f(0)=1.0
f(1)=1.0+1.0/1=2.0
f(2)=1.0+1.0/1+1.0/2=2.5
a=f(0)+f(1)+f(2)=5.5

Ⅳ c语言读程序题,求解

sqrt函数用来求平方根,参数必须是浮点数。

而b是int类型,所以需要加(double)将b强制转换为double 类型。

(double)b+c就是25,开方就是5.

Ⅳ c语言题求解

一、
3. 读程序写出程序执行结果

32

4.
读程序写出程序执行结果

1

5.
读程序写出程序执行结果

16

6.
读程序写出程序执行结果

max=10,row=1,colum=2

7.
读程序写出程序执行结果

210

8.
读程序写出程序执行结果

4

9.
读程序写出程序执行结果

7

10.
读程序写出程序执行结果

7
a=5,c=4

二、简答题
1. 编程: 计算sum=1-1/2!+1/3!-1/4!+ …… -1/10!

#include <stdio.h>
main()
{
long term;
int i,j;
double sum,sign;
for(i=1,sum=0.0,sign=1.0;i<=10;++i)
{
for(j=1,term=1L;j<=i;++j)
term*=j;
sum+=1.0/term*sign;
sign*=-1;
}
printf("sum=%lf\n",sum);
}

2. 编程:写一个判断素数的函数。要求在主函数中输入一个正整数以及打印函数调用后返回的相应的判断信息。

#include <stdio.h>
#include <math.h>
int isprime(int x);
main()
{
int x;
scanf("%d",&x);
if(isprime(x))
printf("%d is a prime\n",x);
else
printf("%d isn't a prime\n",x);
}
int isprime(int x)
{
int i,k;
if(x<2)
return 0;
k=sqrt(x);
for(i=2;i<=k;++i)
if(x%i==0)
return 0;
return 1;
}

Ⅵ C语言 程序分析题 求详解

这个程序应该是把
十进制数
转换成
二进制数
输出
#include
//
头文件
void
main()
{
int
a,b[10],c,i=0;
//
a存储待转换的十进制数,b[10]存储转换后的二进制位,
//
c
是存储
余数

printf("输入一个整数\n");
scanf("%d",&a);
//
输入需转换的十进制数
while(a!=0)
//
只要a不为零,就继续转换
{
c=a%2;
//
把a除以2
的余数赋值给c
a=a/2;
//
把商存入a进行下一次循环
b[i]=c;
//
把余数存到数组中作为二进制中的一位
i++;
}
for(;i>0;i--)
printf("%d",
b[i-1]);
//反向输出余数,即得到二进制
例如输入4
因为4
!=
0
4
/
2
=
2((商=a)...........0(余数=c=b[0])
因为2
!=
0
2
/
2
=
1((商=a)...........0(余数=c=b[1])
因为1
!=
0
1
/
2
=
0((商=a)...........1(余数=c=b[2])
因为
0
=
0
结束循环输出
b[2]
b[1]
b[0]

100,也就是二进制的
4

Ⅶ C语言读程题,根据图中源程序代码,分析解答下列问题

(1)while((ch=getchar())!='\n')
使用getchar函数从键盘获取一次按键输入(只是按下一个按钮),如果按的键不是回车(回车键的输入即为'\n'),继续执行循环体内代码。然后回到该行代码,获取下一个按键输入,一直循环下去,直到按下回车为止。总的效果等同于输入任意字符串,以回车键结束。
(2)if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
在ASCII码表中,基本字符通过ASCII码进行编码。字母a到z的ASCII码范围对应为97~122,字母A到Z则对应65~90。所以当输入字符的ASCII码在上述范围之内时,则输入的字符为大小写英文字母。字符的比较即ASCII码的比较。若输入其它字符,直接输出不进行处理。
&&代表逻辑与,表示两侧的条件同真时为真,否则为假;||代表逻辑或,表示两侧的条件同假时为假,否则为真。例如,必须当字符大于等于'a'并且小于等于'z'时,字符才是小写字母;若字符是小写字母,或者字符是大写字母,则字符是英文字母。

(3)ch+=3
直接对字符的ASCII码进行操作,即可实现字符的转换。这里对字符加3,就实现了字符移位的运算(ASCII码表中小写字母是按照实际顺序排列的,大写字母同理)
(4)if(ch>'z'||(ch>'Z'&&ch<='Z'+4)) ch-=26
if条件表示对移位后的ch进行判断,若超出字母表范围,因为大小写字母各有26个,只需对ASCII码减26就可以回到字母表开头位置,原理类似于求余运算。

Ⅷ C语言程序阅读题怎么做

1.执行预处理命令
2.开始执行程序,从main()进入程序
3.声明结构体变量,把指针(*pd)和md变量设为⼀个可以使⽤data结构体的结构体变量,则指针(*pd)和md这个变量就包含了其data结构体中的所有元素
4.通过变量md寻找结构体中变量,为其赋值,然后赋值后结构体的地址给指针接收
5.执行调用函数fun,将指针寻找到的变量(64,14)传递到fun函数中,用形参x,y接收传递的参数
1).进入while循环,判断x是否不等于y,成立进入循环,不成立则结束循环

2).如果(x>y),计算x-y,将结果赋给x;否则就计算y-x,将结果赋给y(ps:x与y在进入循环就不可能等于,所以结果只有两种情况,再写else if的条件判断就有些多余,用else即可)
3).结束循环,函数返回x的值,结束fun函数的周期

(循环7-8次,没仔细数,最后x=2,y=2)
将得函数返回到的值,通过指针,赋给结构体中res的变量(传值res=2)
6.打印结构体res的最后得到的数据
res=2