C语言,一个字符和数字相加,一个奇怪的问题,求大神

作者&投稿:能薇 (若有异议请与网页底部的电邮联系)
一个觉得很难的C语言问题。对两个数字字符串相加。~

很难才10分啊
#include#includeint main(){ int i,t,j=1,n,len,k; char sum[1009],sa[1009],sb[1009]; scanf("%d",&t); getchar(); while(t--) { for(i=0;i=0;i--,k++) { sum[k]=sum[k]-'0'+sa[i]; n=k; while(sum[n]>'9') { sum[n+1]=sum[n+1]+(sum[n]-'0')/10; sum[n]=(sum[n]-'0')%10+'0'; n++; } } len=strlen(sb); for(i=len-1,k=0;i>=0;k++,i--) { sum[k]=sum[k]-'0'+sb[i]; n=k; while(sum[n]>'9') { sum[n+1]=sum[n+1]+(sum[n]-'0')/10; sum[n]=(sum[n]-'0')%10+'0'; n++; } } printf("Case %d:
%s + %s = ",j,sa,sb); j++; for(i=1008;sum[i]=='0';i--); for(;i>=0;i--) printf("%c",sum[i]); printf("
"); if(t>0) printf("
"); } return 0;}

不要用char数组,既然题目已经说了两个数和和均在int范围内,那么直接用循环取各位数字然后倒序拼凑出原来的两个int型数即可。最后将这两个数相加。

#include<stdio.h>
int main()
{
 char ch;
 int i;
 
 printf("输入一个字符
");
 scanf("%c",&ch);
 
 printf("输入一个数字
");
 scanf("%d",&i);
 ch=ch+i;
 
 if((unsigned char)ch>122&& (unsigned char)ch<(123+i))// 转化成无符号数再比较大小即可,否则 大于127的数会被当初负数处理。
  ch=(ch-122)+96;
  
 printf("%d
%c
",(unsigned char)ch,ch);
}


char类型表示一个有符号数的范围为:-128到127
z的ascii值为122
122+6=128
在内存中,128用一个字节表示就是
1000 0000
而这个数值,按整型输出时,表示的就是-128(补码)

解决你的问题,只需要将ch定义成无符号数就可以了

unsigned char ch ;

很简单,z的ascii值为122
加6=128>127
而char范围为-128 到127,数值越界了,所以变成-128

并不奇怪
char默认是有符号的
范围-128到127
当 加和大于127,就会从最小的-128那里继续开始了


C语言编程,用while语句,输入一行字符统计字母的个数
printf("请输入一行字符:");while ((c=getchar())!='\\n'){ if (c >= 'a'&&c <= 'z' || c >= 'A'&&c <= 'Z'){ letters++;} else if (c == ' '){ space++;} else if (c >= '0'&&c <= '9'){ digit++;} else { other++;} } printf("字母数:%d\\n空格...

C语言程序填空 功能:统计一个字符串中的字母、数字、空格和其它字符的个...
它每一位单个元素都是能提取的,字符串的零位是它的长度,如s[0]=10,这提供给我们很多方便,例如高精度运算时每一位都能转化为数字存入数组。通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:...

c语言中定义了一个int,为何我输入了一个字母或者其他字符,会认为它是数...
这是因为在输入了一个字母或者其他字符的时候,电脑会自动识别转换为对应的ASCII码输入程序。ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号,以及...

c语言输入一个字符串,求所有数字之和
;\/\/求字符串长度 for(i=0;i<n;i++)\/\/遍历字符串判断是否是数字 if(a[i]>='0'&&a[i]<='9')\/\/如果是数字就累加 sum+=a[i]-'0';printf("字符串中数字的和为:%d\\n",sum);\/\/保留数字累加和 return 0;}\/*运行结果:jkahf343124asdf asfdasdf1字符串中数字的和为:18*\/ ...

输入一个字符串和整数i,j。调用子函数删除字符串中第i,j个字符。输出...
include<stdio.h>void fun(char s[],int i,int j){int k,k1; for(k=k1=0;s[k];k++) if(k!=i&&k!=j)s[k1++]=s[k]; s[k1]='\\0'; }int main(){char s[200]; int i,j,k,k1; gets(s); scanf("%d%d",&i,&j); puts(s); fun(s,i-1,j-1); puts(s)...

C语言题:输入一个字符串,统计其中大写字母,小写字母,数字,和其他字符的...
= othCnt = 0;\/\/puts ("输入字符串:");\/\/gets (str);puts (str);while (*p) {if (*p>='A'&&*p<='Z')capCnt++;else if (*p>='a'&&*p<='z')lowCnt++;else if (*p>='0'&&*p<='9')numCnt++;elseothCnt++;p++; }putchar ('\\n');printf ("大写字母%d个\\n"...

用C语言实现统计字符数的函数
思路:从键盘分别输入字符串和要统计的字符,然后对此字符串从头开始逐个与所统计的字符比较。如相同,则让计数器加1,知道字符串整体比较结束为止,计数器中就是需统计的字符的个数,具体代码设计如下:函数应用 1、连接运算 concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn.例:concat(‘11’,'aa’...

请问大神,C语言题,编程功能实现:输入一个字符串,输出字符串中的数字部分...
{ s=s*10+int(str[i])-int('0'); } else { if(str[i-1]>='0'&&str[i-1]<='9') \/\/否则判断前一个元素是不是数字.是的话输出一个空格. printf("%d%d", s, s*2); printf(" "); } i++;...

...包含数字和字母的字符串,以连续的数字构成一个整数,超过六个则另...
is_number(char number); \/\/判断一个char类型的元素是否为数字void delete_all();\/\/删除动态数组int main(){ini();while (1){get_input();if (is_exit())break;split();delete_all();}delete_all();return 0;}int get_input(){int limit = INI,cnt = 0;char ch;...

C语言编程 从键盘输入一个字符串,分别统计其中大写字母、小写字母及其...
if(*p==' ')countk++;\/\/ ‘’中是一个空格 else if((*p>='0')&&(*p<='9'))counts++;else countq++;p++;} printf("大写字母的个数为:%d 小写字母的个数为:%d 空格个数为:%d \\n",countd,countx,countk);printf("数字个数为:%d 其他字符个数为%d\\n",counts,countq);}...

松桃苗族自治县19853051566: c语言,输入一个字符,如果是数字,判断奇偶
崇晏枢丹: 你是想要这种么?但是这个是按ascii表来的哦,所以你输入的只能是字符,字符中的数字就只有0~9,如果输入个21,这就只会显示是个偶数哦,如果是32,这是奇数,错误的显示,只有0~9和各种字符才可以正确输出哦 #include <stdio.h> int ...

松桃苗族自治县19853051566: C语言 请编写程序实现以下功能:在字符串中所有数字字符前加一个$字符.例如, 输入:A1B23C -
崇晏枢丹: #include <stdio.h> int fun(char *s) { char t[80]; int i, j; for(i=0; s[i]; i++) /*将串s拷贝至串t*/ t[i]=s[i]; t[i]='\0'; for(i=0,j=0; t[i]; i++) /*对于数字字符先写一个$符号,再写该数字字符*/ if(t[i]>='0' && t[i]<='9') { s[j++]='$'; s[j++]=t[i]; } /*对于非数字字符原样写...

松桃苗族自治县19853051566: C语言编程:在字符串中所有数字字符前加一个$字符.如, 输入:A1B23CD45,则输出为:A$1 -
崇晏枢丹: 第一个for循环的条件应该是s[i]!=0;下面也还有错.

松桃苗族自治县19853051566: C语言用选择结构编程实现,输入一行字符,将其中的数字字符对应的整数值加起来,并输出结果.如:4a5 -
崇晏枢丹: n&quot,i); printf("n" printf("数字个数=%d\ printf(";;n&quot,k);,m);空格个数=%d\英文字母个数=%d\,j);其他字符个数=%d\;n&quotprintf(&quot

松桃苗族自治县19853051566: c语言字符相加是什么意思 -
崇晏枢丹: (1) C语言中没有 字符串相减 运算. (2) C语言中 有 单个字符 相减 运算. 例如,把字符串"1234"里的各个数字字符转成整型,存入整型数组: int i,x[4]; char str[]="1234"; for (i=0;i<4;i++) x[i] = str[i] - '0'; 例如, 把字符串中字母,小写变大写...

松桃苗族自治县19853051566: C语言输入整数和数字字符并求和,分别以整数形式和字符形式输出 -
崇晏枢丹: #include <stdio.h> int main() {int a;char b;while(scanf("%d,%c",&a,&b)==2){printf("%d,%d\n",a+b,a+b-'0');}return 0; }

松桃苗族自治县19853051566: C语言中字符和数字加减问题 -
崇晏枢丹: “/”“*”是同一级的所以按顺序计算,先是2/6,又由于两者均是整型则计算结果取整型部分0 字符类型的7和0被强制转换成整型7和0 .最终结果是7

松桃苗族自治县19853051566: c语言一串字符串中提取数字并相加的问题 -
崇晏枢丹: #include<stdio.h> main() {char x;char input1='\0';char input2='\0';int number1=0;int number2=0;printf("请输入字符串1:(输入?结束)");//输入?作为字符串1的结束符while(x!='?'){x=getchar();if(x=='?')break;input1=x;if(input1>...

松桃苗族自治县19853051566: C语言怎么实现 由键盘输入一行字符,将其中每个数字字符所代表的数值累加起来,输出结果. -
崇晏枢丹: #include <stdio.h> #include <conio.h> void main(void) {char ch;int sum = 0;while((ch=getche())!='\r')//按下回车键,退出读入,并输出结果{if (ch>='0'&&ch<='9'){sum += ch - '0';}}printf("\n%d\n",sum); }

松桃苗族自治县19853051566: 任意输入一个字符串,输出其中数字字符之和.拜托各位C语言大神,在 -
崇晏枢丹: #include int main() { int c,s=0; while((c=getchar())!='\n') if(c>='0' && c<='9') s+=c-'0'; printf("%d\n",s); return 0; }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网