c1=197 c语言
c1=197 c语言,c语言:整型和字符型的范围易错及分析
大大的蓝天
转载
关注
4点赞·1994人阅读
分析下面的程序:
#include
int main()
{
char c1, c2;
c1 = 97;
c2 = 98;
printf("c1=%c,c2=%c\n", c1, c2);
printf("c1=%d,c2=%d\n", c1, c2);
return 0;
}
(1)运行时会输出什么信息?为什么?
解:运行时输出:
c1=a,c2=b
c1=97,c2=98
请按任意键继续
第一行输出是将c1,c2按%c的格式输出,97是a的ASCII码,98是字符b的ASCII码;
第二行输出是将c1,c2按%d的格式输出,所以输出两个十进制整数。
(2)如果将程序第4,5行改为:
c1=197;
c2=198;
运行时会输出什么信息?为什么?
解:程序:
#include
int main()
{
char c1, c2;
c1 = 197;
c2 = 198;
printf("c1=%c,c2=%c\n", c1, c2);
printf("c1=%d,c2=%d\n", c1, c2);
return 0;
}
结果:
c1=c2=
c1=-59,c2=-58
请按任意键继续
由于在VS中,字符型数据是作为signed char类型处理的,存字符的有效范围为[0,127]之间,超过此范围的处理方法,不同系统得到结果不同,因而用“%c”格式输出,结果不可预料;
用“%d”格式输出时,输出c1=-59,c2=-58,这是按补码形式输出的,内存字节中第1位为1时,作为负数,59+197=58+198=256。
(3)如果将程序第3行改为:int c1,c2;
运行时会输出什么信息?为什么?
解:程序1:
#include
int main()
{
int c1,c2;
c1 = 97;
c2 = 98;
printf("c1=%c,c2=%c\n",c1,c2);
printf("c1=%d,c2=%d\n", c1, c2);
return 0;
}
结果:
c1=a,c2=b
c1=97,c2=98
请按任意键继续
输出结果和(1)相同
程序2:
#include
int main()
{
int c1,c2;
c1 = 197;
c2 = 198;
printf("c1=%c,c2=%c\n",c1,c2);
printf("c1=%d,c2=%d\n", c1, c2);
return 0;
}
结果:
c1=c2=
c1=197,c2=198
请按任意键继续
当c1 = 197;c2 = 198;时,用“%c”输出,仍然是不可预料的字符;用“%d”输出时,得到c1=197,c2=198
,因为它们在int类型的有效范围(-2^31,2^31-1)内,分配4个字节。
c1=197 c语言
喜报!儿子上985,女儿上211,本地妈妈出名了!点醒无数家长
教育专栏
广告
C程序设计谭浩强第五版课后答案 第三章习题答案
2510阅读·0评论·1点赞
2021年1月31日
c语言转义字符表解析,C语言常用转义字符表
910阅读·0评论·1点赞
2021年5月19日
C语言字符类型
2884阅读·0评论·1点赞
2017年7月10日
C语言 转义字符和ASCII码对照表
6745阅读·0评论·7点赞
2021年2月1日
c语言 变量 字符表,第3章 变量和数据类型 7、C语言中的字符(char)
171阅读·0评论·0点赞
2021年5月19日
3-分析下面程序
1315阅读·0评论·2点赞
2021年4月9日
快来,在Soul上有秒回消息的人
00:16
Soul
版本 4571
立即下载
广告
隐私
权限
上海任意门科技有限公司
c语言—— 类型转换
177阅读·0评论·0点赞
2018年11月21日
c语言197对应什么字母,c语言的问题
1763阅读·0评论·0点赞
2021年5月19日
c语言char197用%d输出变为-59,强制类型转换所导致的数据改变
3566阅读·1评论·17点赞
2021年3月30日
C语言输出ASCII码128~255和有符号char型溢出的问题记录
2004阅读·1评论·6点赞
2020年3月22日
C语言常用字符ASCII代码表,C语言常用转义字符、ASCII、优先级对照表
1145阅读·0评论·0点赞
2021年5月20日
c语言中198对应的字符是什么,c语言中转义字符是什么意思
411阅读·0评论·0点赞
2021年5月20日
c语言中各个符号的含义总结,C语言中的符号总结
17W阅读·0评论·4点赞
2021年5月19日
分析下面的程序#include<stdioh> int main() { char c1,c2; c1=197; c2=198;
18W阅读·0评论·3点赞
2021年3月28日
谭浩强C程序设计:第三章习题
431阅读·0评论·0点赞
2022年3月26日
C语言数据类型的存储和转换
1069阅读·0评论·1点赞
2022年3月14日
c语言综合作业答案,C语言作业答案
228阅读·0评论·0点赞
2021年5月18日
C语言程序设计(第四版)谭浩强 课后习题答案 第三章
3270阅读·0评论·6点赞
2020年4月22日
关于C语言输出ASCII码128~255和有符号char型溢出的问题。此处大坑弄明白了后记录下来分享……
6685阅读·3评论·14点赞
2019年3月19日
在C语言中为什么c1出现错误,c语言:用scanf函数输入数据,举例并分析错误原因
232阅读·0评论·0点赞
2021年5月19日
去首页
看看更多热门内容
#include <stdioh>
#include <mathh>
int main()
{
int p,r,n;
printf("Please Input r n:");
scanf("%d %d",&r,&n);
p=(int)pow(1+r,n);
printf("p=:%d",p);
return 0;
}
输入格式为r n,回车就是答案。用到pow函数,在头文件中引用#include <mathh>,其他的都很简单。
1一本书再版是有些结构发生变化了。
2对于结构或者内容架构的变化,这个只有编书的人才清楚。
3无论怎么变,旧版的书总可以在新版中找到痕迹,所以你说答案不符合,只是13题和13题不符合,或者是以前的低12题,或者第三版根本没有这一题。
#include<stdioh>
int main() {
float average(float array[10]);
float score[10], aver;
int i;
printf("input 10 scores:\n");
for (i = 0; i < 10; i++)
scanf("%f", &score[i]);//数组下标不能用10,超限了,最大只能用到9
printf("\n");
aver = average(score);
printf("average score is %52f\n", aver);
return 0;
}
float average(float array[10]) {
int i;
float aver, sum = array[0];
for (i = 1; i < 10; i++)
sum = sum + array[i];
aver = sum / 10;
return(aver);
}
(第一题)#include <stdioh>
void main()
{
int gy(int m, int n);
int x,y,max, min;
printf("请输入两个大于0的正整数,以空格或者回车间隔:\n");
scanf("%d%d",&x,&y);
while(x<1 || y<1)
{
printf("输入数据不正确,请重新输入。\n");
printf("请输入两个大于0的正整数,以空格或者回车间隔:\n");
scanf("%d%d",&x,&y);
}
max=gy(x,y);
min=xy/max;
printf("%d与%d的最大公约数是:%d,最小公倍数是:%d\n",x,y,max,min);
}
int gy(int m, int n)
{
int max, t;
while(m%n != 0) // while(m%n)
{
t=n; n=m%n; m=t;
}
max=n;
return max;
}
第二题#include <stdioh>
#include <mathh>
void main()
{
void root(double a, double b, double c);
double a, b, c;
printf("请输入一元二次方程的系数,用空格或者回车间隔:\n");
scanf("%lf%lf%lf",&a,&b,&c);
root(a,b,c);
}
void root(double a, double b, double c)
{
double disc, x1, x2, real , imag;
disc = bb-4ac;
if(disc>0)
{
x1 = (-b+sqrt(disc))/(2a);
x2 = (-b-sqrt(disc))/(2a);
printf("方程有两个实根,分别是:%f 与 %f\n", x1, x2);
}
else if(disc==0)
{
x1 = (-b)/(2a);
printf("方程有一个实根,它是:%f\n ", x1);
}
else
{
real=(-b)/(2a);
imag=sqrt(-disc)/(2a);
printf("方程有两个虚根,分别是:%f+%fi, %f-%fi\n", real,imag,real,imag);
}
}
测试1:请输入一元二次方程的系数,用空格或者回车间隔:1 2 1
方程有一个实根,它是:-1000000
测试2:请输入一元二次方程的系数,用空格或者回车间隔:1 6 5
方程有两个实根,分别是:-1000000 与 -5000000
测试3:请输入一元二次方程的系数,用空格或者回车间隔:1 1 1
方程有两个虚根,分别是:-0500000+0866025i, -0500000-0866025i
第三题#include <stdioh>
#include <mathh>
void main()
{
int isprime(int n);
int n;
scanf("%d",&n);
while(n<2)
{
printf("Please reinput(n>=2):");
scanf("%d",&n);
}
if(isprime(n))
printf("%d是素数。\n",n);
else
printf("%d不是素数。\n",n);
}
int isprime(int n)
{
int i,k=sqrt(n);
for(i=2;i<=k;i++)
{
if(n%i==0)
return 0;
}
return 1;
}
第四题#include <stdioh>
#include <mathh>
void main()
{
void printA(int a[3][3]);
void reverse(int a[3][3]); //转置函数的声明
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
printf("原二维数组:\n");
printA(a);
reverse(a); //函数转置
printf("转置后的数组:\n");
printA(a);
}
void printA(int a[3][3])
{
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%6d",a[i][j]);
}
printf("\n");
}
}
void reverse(int a[3][3]) //函数转置的定义
{
int i,j,t;
for(i=0;i<3;i++)
{
for(j=0;j<i;j++)
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}
}
第五题#include <stdioh>
#include <stringh>
void main()
{
char str[30];
void fanxu(char p);
printf("请输入一个字符串:");
gets(str);
printf("进行反序\n");
fanxu(str);
printf("反序后的字符串:");
puts(str);
}
void fanxu(char p)
{
int len=strlen(p);
char q,c;
q=p+len-1; //字符串最后一个字符位置
for(;p<q;p++,q--)
{
c=p; p=q; q=c;
}
}
第六题#include <stdioh>
#include <stringh>
void main()
{
char str1[60],str2[30];
void str_copy(char p, char q);
printf("请输入第一个字符串:");
gets(str1);
printf("请输入第二个字符串:");
gets(str2);
str_copy(str1, str2);
printf("连接后的字符串:");
puts(str1);
}
void str_copy(char p, char q)
{
for(;p!='\0';p++);
for(;q!='\0';p++,q++)
{
p=q;
}
p='\0';
}
(0808)#include <stdioh>
#include <stringh>
void main()
{
char str[80];
void insert(char str[]); //插入空格的函数
printf("请输入一个字符串:");
gets(str);
insert(str); //插入空格
puts(str); //输出字符串
}
void insert(char str[])
{
int len, i;
len=strlen(str);
for(i=len; i>0; i--) // 设置空格
{
str[2i]=str[i];
str[2i-1]=' ';
}
}
(0809)#include <stdioh>
int letter; //字母个数
int digit; //数字个数
int space; //空格个数
int others; //其它字母个数
void main()
{
void count(char str[]); //统计个数的函数的声明
char s[81];
printf("请输入一个字符串:");
gets(s);
letter=0; digit=0;
space=0; others=0;
count(s);
printf("字符串中共有 %d 个字母,%d 个数字,%d 个空格,%d个其它字母。\n",letter,digit,space,others);
}
void count(char str[]) //统计个数的函数的定义
{
int i;
char c;
for(i=0; str[i]!='\0';i++)
{
c=str[i];
if(c>='a' && c<='z' || c>='A' && c<='Z')
{ letter++; }
else if(c>='0' && c<='9')
{ digit++; }
else if(c==' ')
{ space++; }
else
{ others++; }
}
}
(0810)#include <stdioh>
#include <stringh>
void main()
{
int i;
char line[81];
int alphabetic(char c); //判断一个字符是空格还是其它字母
int longest(char str[]);//寻找最长单词的起始位置
printf("请输入一行字符串:\n");
gets(line);
printf("最长的字符串是:");
for(i=longest(line); alphabetic(line[i]); i++)
{ printf("%c",line[i]);}
printf("\n");
}
int alphabetic(char c) //如果为空格返回0,其它字母返回1
{
if(c!=' ')
return 1;
else
return 0;
}
int longest(char str[])
{
int len=0; // 记录每一个单词的长度
int length=0; // 记录最长单词的长度
int flag=1; // 其值为0时表示当前位置处于字符串中,为1时表示当前位置为空格
int place=0; // 记录最长字符串(单词)的起始位置
int point; // 每个字符串的起始位置
for(int i=0; i<=strlen(str); i++)
{
if(alphabetic(str[i])) //如果当前位置为非空格
{
if(flag) //如果前一字符为空格
{
point = i; // 设置当前单词的起始位置
flag = 0; // flag设为0,表示处于单词中
}
else //如果前一字符为非空格
{ len++; } // 单词的长度加1
}
else //当前位置为空格
{
flag = 1; //flag设为1,表示当前位置为空格
if(len >= length) //如果最近单词的长度大于最长长度
{
length = len;
place = point; //设置最长单词的起始位置
len = 0; //len归0,重新开始计算单词的长度
}
}
}
return place;
}
(0811)#include <stdioh>
#include <stringh>
void main()
{
void inputNum(int a[], int n);
void outputNum(int a[], int n);
void bubble(int a[], int n);
int a[11], n;
printf("请输入你要排序的数的个数:");
scanf("%d",&n);
inputNum(a,n);
outputNum(a,n);
bubble(a,n);
printf("从小到大排序为:\n");
outputNum(a,n);
}
void inputNum(int a[], int n)
{
int i;
for(i=1;i<=n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
}
void outputNum(int a[], int n)
{
int i;
for(i=1;i<=n;i++)
{
printf("%6d",a[i]);
}
printf("\n");
}
void bubble(int a[], int n)
{
int i,j,t;
for(i=1;i<=n-1;i++)
{
for(j=1; j<=n-i; j++)
{
if(a[j]>a[j+1])
{ t=a[j]; a[j]=a[j+1]; a[j+1]=t; }
}
}
}
(0813)#include <stdioh>
void main()
{
double lrd(int, double);
double x;
int n;
printf("请输入n阶勒让德多项式的阶数:\n");
scanf("%d",&n);
printf("请输入x的值:\n");
scanf("%lf",&x);
printf("参数为%f 的 %d 阶勒让德多项式的值为 %f\n",x,n,lrd(n,x));
}
double lrd(int n, double x)
{
if(n==0)
return 1;
else if(n==1)
return x;
else
return ((2n-1)x - lrd(n-1,x) -(n-1)lrd(n-2,x))/n;
}
/
测试1:请输入n阶勒让德多项式的阶数:0请输入x的值:9999参数为99990000 的 0 阶勒让德多项式的值为 1000000
测试2:请输入n阶勒让德多项式的阶数:1请输入x的值:9999
参数为99990000 的 1 阶勒让德多项式的值为 99990000
测试3:请输入n阶勒让德多项式的阶数:2
请输入x的值:9999 参数为99990000 的 2 阶勒让德多项式的值为 99490000
测试4:请输入n阶勒让德多项式的阶数:10
请输入x的值:11
参数为1100000 的 10 阶勒让德多项式的值为 0888677
(0817)#include <stdioh>
void main()
{
int num;
void convert(int num); // 转换为字符串的函数的声明
printf("请输入一个整数:\n");
scanf("%d",&num);
printf("转换成字符串:");
if(num<0)
{
putchar('-');
num = -num;
}
convert(num);
printf("\n");
}
void convert(int n)
{
int i;
if((i = (n/10)) != 0)
{
convert(i);
}
putchar(n%10 + '0');
}
(0818)#include <stdioh>
int d[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
void main()
{
int year,month,day;
int days;
int count(int year,int month, int day);
int leap(int y);
printf("请输入年份:");
scanf("%d",&year);
while(year<=0)
{
printf("年份不能为负,请重新输入:");
scanf("%d",&year);;
}
if(leap(year)) //如果为闰年,2月份的天数为29
{ d[2]=29; }
printf("输入月份:");
scanf("%d",&month);
while(month<1 || month>12)
{
printf("月份在1月和12月之间,你的输入有误,请重新输入:");
scanf("%d",&month);
}
printf("输入日数:");
scanf("%d",&day);;
while(day<1 || day >d[month])
{
printf("日数应在1和%d之间,请重新输入:",d[month]);
scanf("%d",&day);
}
days=count(year,month,day);
printf("%d年%d月%d日是该年的第%d天\n",year,month,day,days);
}
int leap(int y)
{
if(y%4==0 && y%100!=0 || y%400==0)
return 1;
else
return 0;
}
int count(int year,int month, int day)
{
int i,days=0;
for(i=1; i<month; i++)
{ days += d[i]; }
days+=day;
return days;
}
(08050)#include <stdioh>
#include <stringh>
void main()
{
char str[30];
void fanxu(char str[]);
printf("请输入一个字符串:");
gets(str);
printf("进行反序\n");
fanxu(str);
printf("反序后的字符串:");
puts(str);
}
void fanxu(char str[])
{
int len=strlen(str);
int i,j;
char c;
i=0; j=len-1;//i,j分别存储第一个字符和最后一个字符的下标
for(;i<j; i++,j--)
{
c=str[i]; str[i]=str[j]; str[j]=c;
}
}
(08051)#include <stdioh>
#include <stringh>
void main()
{
char str[30];
void fanxu(char s[]);
printf("请输入一个字符串:");
gets(str);
printf("进行反序\n");
fanxu(str);
printf("反序后的字符串:");
puts(str);
}
void fanxu(char s[])
{
int len=strlen(s);
int i;
char c;
for(i=0;i<=len/2;i++)
{
c=s[i];
s[i]=s[len-i-1];
s[len-i-1]=c;
}
}
(08061)#include <stdioh>
#include <stringh>
void main()
{
char str1[60],str2[30];
void str_copy(char s1[], char s2[]);
printf("请输入第一个字符串:");
gets(str1);
printf("请输入第二个字符串:");
gets(str2);
str_copy(str1, str2);
printf("连接后的字符串:");
puts(str1);
}
void str_copy(char s1[], char s2[])
{
int i,j;
for(i=0;s1[i];i++); // s1[i]!='\0'
for(j=0;s1[i]=s2[j];i++,j++);
// (s1[i]=s2[j])!='\0'
}
(08110)#include <stdioh>
#include <stringh>
void main()
{
void inputNum(char a[], char n);
void outputNum(char a[], char n);
void bubble(char a[], char n);
char a[11], n;
printf("请输入你要排序的数的个数:");
scanf("%d",&n);
inputNum(a,n);
outputNum(a,n);
bubble(a,n);
printf("从小到大排序为:\n");
outputNum(a,n);
}
void inputNum(char a[], char n)
{
char i;
printf("请连续输入%d个字符:",n);
fflush(stdin); //一般在输入字符或者字符串之前要清空输入缓冲区
for(i=1;i<=n;i++)
{
scanf("%c",&a[i]);
}
}
void outputNum(char a[], char n)
{
char i;
for(i=1;i<=n;i++)
{
printf("%2c",a[i]);
}
printf("\n");
}
void bubble(char a[], char n)
{
char i,j,t;
for(i=1;i<=n-1;i++)
{
for(j=1; j<=n-i; j++)
{
if(a[j]>a[j+1])
{ t=a[j]; a[j]=a[j+1]; a[j+1]=t; }
}
}
}
(08112)#include <iostreamh>
#include <iomaniph>
void main()
{
void inputNum(int a[], int n);
void outputNum(int a[], int n);
void bubble(int a[], int n);
int a[11], n;
cout<<"请输入你要排序的数的个数:";
cin>>n;
while(n<1 || n>10)
{
cout<<"请重新输入,(1<=n<=10):";
cin>>n;
}
inputNum(a,n);
outputNum(a,n);
bubble(a,n);
cout<<"从小到大排序为:\n";
outputNum(a,n);
}
void inputNum(int a[], int n)
{
int i;
for(i=1;i<=n;i++)
{
cout<<"a["<<i<<"]=";
cin>>a[i];
}
}
void outputNum(int a[], int n)
{
int i;
for(i=1;i<=n;i++)
{
cout<<setw(6)<<a[i];
}
cout<<endl;
}
void bubble(int a[], int n)
{
int i,j,t;
for(i=1;i<=n-1;i++)
{
for(j=1; j<=n-i; j++)
{
if(a[j]>a[j+1])
{ t=a[j]; a[j]=a[j+1]; a[j+1]=t; }
}
}
}
(08181)#include <iostreamh>
#include <iomaniph>
int d[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
void main()
{
int year,month,day;
int days;
int count(int year,int month, int day);
int leap(int y);
cout<<"请输入年份:";
cin>>year;
while(year<=0)
{
cout<<"年份不能为负,请重新输入:";
cin>>year;
}
if(leap(year)) //如果为闰年,2月份的天数为29
{ d[2]=29; }
cout<<"输入月份:";
cin>>month;
while(month<1 || month>12)
{
cout<<"月份在1月和12月之间,你的输入有误,请重新输入:";
cin>>month;
}
cout<<"输入日数:";
cin>>day;
while(day<1 || day >d[month])
{
cout<<"日数应在1和"<<d[month]<<"之间,请重新输入:"<<endl;
cin>>day;
}
days=count(year,month,day);
cout<<year<<"年"<<month<<"月"<<day<<"日是该年的第"<<days<<"天\n";
}
int leap(int y)
{
if(y%4==0 && y%100!=0 || y%400==0)
return 1;
else
return 0;
}
int count(int year,int month, int day)
{
int i,days=0;
for(i=1; i<month; i++)
{ days += d[i]; }
days+=day;
return days;
}
以上就是关于c语言‘c’+1等于多少全部的内容,包括:c语言‘c’+1等于多少、用c语言怎么编辑 p = (1+r)的n次方、【求助大神!!】谭浩强的c程序设计第四版的习题和第三版的上机指导的答案不符合啊,为什么会这样等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)