这个c语言程序为什么无法执行成功 为什么这个C语言程序不能运行?

C\u8bed\u8a00\u7f16\u7684\u8fd9\u4e2a\u7a0b\u5e8f\uff0c\u4e3a\u4ec0\u4e48\u7f16\u8bd1\u6210\u529f\uff0c\u5374\u65e0\u6cd5\u8fd0\u884c\uff1f\uff1f

\u5e2e\u4f60\u6539\u4e86\u4e0b
#include

int
main(void)
{
float
l
=
0.0;
float
q
=
0.0;
float
k
=
0.0;
printf("\u6447\u6746\u957f\u5ea6=");
scanf("%f",&l);
printf("\u6446\u89d2=");
scanf("%f",&q);
printf("\u884c\u7a0b\u901f\u6bd4\u7cfb\u6570=");
scanf("%f",&k);
return
0;
}
\u8fd9\u6837\u5c31\u6ca1\u95ee\u9898\u4e86\u3002
\u7f16\u8bd1\u7cfb\u7edf\u6ca1\u6709\u81ea\u52a8\u8fde\u63a5\u4e0afloat
\u7c7b\u578b\u5e93\uff0c\u4f60\u8981\u63d0\u9192\u7f16\u8bd1\u5668
\u5f15\u5165float\u7c7b\u578b\u3002

\u7b2c1\uff0c*p=
&max;\uff0c\u5e94\u8be5\u6539\u4e3ap
=
&max
p\u662fint\u578b\u6307\u9488\uff0c\u8fd9\u6837\u624d\u7c7b\u578b\u5339\u914d\u3002
\u7b2c2\uff0cfscanf(stdin,
"%d",
a[i]
\u8fd9\u4e00\u884c\uff0c
a[i]\u5e94\u8be5\u6210&a[i]\uff0c
fscanf\u4f20\u5165\u7684\u662f\u5730\u5740\uff0c\u6f0f&\u662f\u521d\u5b66\u8005\u5e38\u89c1\u9519\u8bef\u3002
\u597d\u50cf\u5c31\u8fd9\u4e24\u4e2a\u9519\uff0c\u5e0c\u671b\u80fd\u5bf9\u3002
\u8865\u5145\u4e00\u4e0b\uff0cwhile(fscanf(...)
==
1)\u8fd9\u91cc\u662f\u4e2a\u6b7b\u5faa\u73af\uff0c\u5c31\u662f\u8bf4\u4f60\u7684\u7a0b\u5e8f\u4e0d\u4f1a\u505c\u7684\u554a\uff0c\u4f60\u53ef\u4ee5\u6539\u6210\u8bfb\u5230\u8d1f\u6570\u5c31\u505c\u4e4b\u7c7b\u7684\u3002
\u8981\u662f\u8f93\u5165\u4e00\u884c\u5c31\u505c\u7684\u8bdd\uff0c\u9700\u8981\u5148\u628a\u8fd9\u4e00\u884c\u8bfb\u5165\uff0c\u518d\u5206\u6790\u6570\u5b57\u624d\u80fd\u505a\u5230\u3002

你的程序问题比较多,大致有如下几个:
1.输入字符串时,看起来你是想按字符挨个输入,那么scanf语句应该这样写:
scanf("%c",&aa[i]);
%c代表输入字符,而且不要忘记scanf()函数中需要使用取地址符号&
2.判断是否屏蔽的if语句结构体内,由于aa[i+1]的使用造成了当i=9时出现了aa[10]使数组越界,因此应该将循环体上限减1,变成i<9
3.应该判断确实已经进行过屏蔽操作才输出“其中有不合法字符 已屏蔽”这句话,而不是一定输出
4.输出字符串时应该按字符循环输出,因此需要用%c而不是%s

修改后的程序如下:
#include <stdio.h>
void main()
{
int i,flag=0;////flag用于判断是否输出“其中有不合法字符 已屏蔽”这句话
char aa[10];
printf("请输入合法字符\n");
for(i=0;i<10;i++)
{
scanf("%c",&aa[i]);/////注意这里!!
fflush(stdin);////清空缓冲区,防止回车误接收
}

for(i=0;i<9;i++)////注意这里!!
{
if(aa[i]=='a'&& aa[i+1]=='b')
{
aa[i]='*';
aa[i+1]='*';
flag=1;
}
}
if (flag)
{
printf("其中有不合法字符 已屏蔽");
}
for (int j=0;j<10;j++)
{
printf("%c",aa[j]);////注意这里!!
}
}

给你改了,你的问题:你定的是10个字符的数组,所以只能输入9个,因为最后一位是"\0",这是字符串结尾标记,如果不足9个后面有的数组是空的,出错了。
我给你改过了,随便输多少字符都行(当然要小于9个)

#include <stdio.h>
void main()
{
int i;
char aa[10];
printf("请输入合法字符");
scanf("%s",aa);
for(i=0;i<10;i++)
{
if(aa[i]=='a'&&aa[i+1]=='b')
{
aa[i]='*';aa[i+1]='*';
printf("其中有不合法字符 已屏蔽");
}
}
printf("%s\n",aa);
}

1.输入字符最好用scanf("%s",aa);别用for循环 容易出错 同理 输出也是一样 用指针
2.设置flag 可以避免出现没有不合法字符而显示"其中有不合法字符 已屏蔽"
3.{}还是要打的 for循环之后最好有
4.重点是中间的那个屏蔽字符语句 for循环的上限是9 而不是10
#include "stdio.h"
void main()
{int i,flag=0;
char aa[10];
printf("请输入合法字符\n");
scanf("%s",aa);
for(i=0;i<9;i++)
{if(aa[i]=='a'&&aa[i+1]=='b')
{aa[i]='*';aa[i+1]='*';flag=1;}}
if(flag) printf("其中有不合法字符 已屏蔽\n");
printf("%s\n",aa);
}
这个我编译过了 可以的

我给你改了一下,应该可以实现你的功能了,不过还有两个问题你自己改吧:
1)没有对数组的边界进行检测;
2)无论屏蔽与否都会显示"其中有不合法字符"

#include "stdio.h"
void main() {
int i;
char aa[10];

printf("请输入合法字符:");
scanf("%s",aa);

for(i=0;i<10;i++) {
if(aa[i]=='a' && aa[i+1]=='b') {
aa[i]='*';aa[i+1]='*';
}
}

printf("其中有不合法字符 已屏蔽");
printf("%s",aa);
}

错的不是一般的严重,我给你改了一下
#include <stdio.h>
main()
{
int i;
char ch[10];
gets(ch);
for(i=0;i<9;i++)
if(a[i]=='a'&&b[i+1]=='b')
{
a[i]='*';
b[i+1]='*';
}
puts(ch);
getch();
}
2楼有点小错误 如果for(i=0;i<10;i++),那么a[i+1]最后一个是a[10],但数组
a[N]中,最后是一个元素是a[N-1],而不是a[N]

  • 涓轰粈涔圕璇█绋嬪簭缂栬瘧姝g‘浣涓嶈兘鎵ц?
    绛旓細杩欏綋鐒跺師鍥犻潪甯稿锛屾瘮濡傦細缂栬瘧鍣ㄧ紪璇戜笉澶熶弗鏍笺绋嬪簭鏈夊緢澶х殑椋庨櫓绛夌瓑锛屾渶绠鍗曠殑涓涓緥瀛愬涓嬶細int a; scanf("%d",a);鍙互纭畾鐨勪竴鐐规槸锛氫竴鏃﹀湪杩愯涓嚭鐜伴敊璇紝澶у鏄緝涓轰弗閲嶇殑閿欒锛岄』寮曡捣閲嶈锛屽惁鍒欙紝涓鏃﹂敊璇潪甯镐弗閲嶏紝蹇呬細瀵艰嚧璁稿涓ラ噸鐨勫悗鏋滐紝濡傛鏈恒佸崱灞忕敋鑷崇洿鎺ュ鑷磋摑灞忋
  • 涓轰粈涔堣繖涓狢璇█绋嬪簭鎵ц涓嶅嚭缁撴灉?
    绛旓細鍏堟妸杩欎釜绋嬪簭涓槑鏄剧殑涓や釜閿欒鐨勫湴鏂逛慨鏀逛簡鍚э紵绋嬪簭涓病鏈夊0鏄庢繁搴﹀拰h涓や釜鍙橀噺锛屼絾鏄嵈鎶婂浠栦滑鐨勮祴鍊煎啓鍦ㄤ簡鎵鏈夊嚱鏁扮殑澶栬竟銆傚鍋氫负浣滀负鍏ㄥ眬鍙橀噺澹版槑鐨勮瘽锛屼篃鍙槸澹版槑鍦ㄥ嚱鏁扮殑澶栬竟锛屼絾鏄鍙橀噺鐨勮祴鍊硷紝搴旇鏄湪涓诲嚱鏁板唴閮ㄣ傝繕鏈夌悆娣卞害鐨勮繖涓嚱鏁帮紝骞舵病鏈夎繑鍥炲硷紝杩欐槸涓嶈捣浣滅敤鐨勩
  • C璇█闂鈥杩欎釜绋嬪簭涓轰綍鎵ц涓浜?鍝効閿欎簡?
    绛旓細姝诲惊鐜簡锛屽惊鐜腑鐨刬+2娌℃湁澶嶅埗缁欎换浣曞彉閲忥紝鏀逛负i=i+2灏卞彲浠ヤ簡锛岃繖鏍锋墠鑳芥敼鍙榠鐨勫笺
  • 涓轰粈涔圕璇█绋嬪簭缂栬瘧姝g‘浣涓嶈兘鎵ц?
    绛旓細杩欎釜绋嬪簭瑕佹湁main鍑芥暟锛屼綘鐨勮繖涓兘娌℃湁鎬庝箞鎵ц锛熷姞涓猰ain鍑芥暟锛岀劧鍚庡湪閲岄潰璋冪敤func杩欎釜鍑芥暟銆
  • 涓轰粈涔鍦c璇█缂栧ソ鐨绋嬪簭鏃犳硶杩愯
    绛旓細缂栫爜鑰呯紪杈戠殑涓滆タ锛屽彨鈥C婧愮▼搴"銆傗淐婧愮▼搴忊濆繀椤荤粡杩団滅紪璇戙佽繛鎺モ濓紝鐢熸垚鍙鎵ц绋嬪簭锛寃indows涓嬮氬父鏄.exe"鍚庣紑鐨勬枃浠讹紝鍦╨inux/unix涓嬶紝鍙兘灏辨槸涓涓笉甯﹀悗缂鐨勫彲鎵ц绋嬪簭鏂囦欢銆傛瘮濡傦細hello.c锛屽湪windows涓嬪彲鑳界敓鎴恏ello.exe銆傚湪linux/unix涓嬶紝鍙兘鐢熸垚hello 鈥滅紪璇戔濆拰鈥滆繛鎺モ濊繃绋嬶紝涓嶈兘鏈夐敊璇...
  • 涓轰粈涔鍦c璇█涓杩娈绋嬪簭涓嶈兘杩愯?
    绛旓細灏唌ain鏀瑰洖鏉ュ氨琛屼簡 涓嬮潰杩欎釜浠g爜鍦╒C6涓婂凡缁忚繍琛岀‘璁や簡锛歩nclude <stdio.h> main(){ int a,b=322;float x,y=8.88;char c1='k',c2;a=y;x=b;a=c1;c2=b;printf("%d,%f,%d,%c",a,x,a,c2);}
  • C璇█涓轰粈涔浼氬嚭鐜:缂栬瘧閫氳繃,鎵ц澶辫触 鐨勬儏鍐?
    绛旓細璇硶瀵癸紝璇箟閿欙紝婧㈠嚭閿欙紝涓嬫爣瓒呯晫锛屾寚閽堟湭鍒嗛厤鍗曞厓銆傚緢澶氬暒銆傛柊鎵嬪父鐘敊璇細void main(){ int a=0;scanf("%d",a);printf("%d \n",a);} 閿欏湪 scanf("%d",a); -- 搴斿綋鏄 scanf("%d",&a);缂栬瘧閫氳繃锛鎵ц澶辫触锛
  • 涓轰粈涔堣繖涓绋嬪紡涓嶈兘杩愯???C璇█,C++
    绛旓細浣犳病鏈夊缓宸ョ▼灏辩洿鎺ヨ创浜嗕釜cpp锛屽綋鐒惰繍琛涓浜嗕簡锛屼綘瑕佸垱寤烘帶鍒跺彴搴旂敤绋嬪簭锛岀劧鍚庢坊鍔燾pp锛鎵ц銆
  • 杩欎釜C璇█绋嬪簭涓轰粈涔堟棤娉姝e父杩愯? 绋嬪簭鍔熻兘鏄妸瀛楃涓蹭紶鍏ユ暟缁勩傘傜劧鍚...
    绛旓細while(strcmp(fgets(aaa,BUFFER,stdin),"quit\n")!=0)p[i++] = (char*)calloc(strlen(aaa)+1,sizeof(char));杩欓噷鏈夐棶棰橈紝浣犳妸杈撳叆鐨勫瓧绗︿覆璇诲叆鍒颁簡aaa鏁扮粍涓簡锛屼絾鏄病鏈夋嫹璐濆埌p閲岄潰 鎵浠ュ湪鎵цpt鍑芥暟鐨勬椂鍊欙紝灏辨湁闂 鏀规垚杩欐牱 while(strcmp(fgets(aaa,BUFFER,stdin),"quit\n")!=0){...
  • c璇█杩欐绋嬪簭涓轰粈涔堜笉鑳芥墽琛?
    绛旓細鍑芥暟澹版槑锛屼綘鍜屽彉閲忓畾涔夊啓涓璧蜂簡 鏀瑰埌main鍑芥暟涔嬪墠灏辨病闂浜
  • 扩展阅读:c语言怎么延时一秒 ... c语言代码运行不了 ... c++编程 ... 为什么代码没错却不能执行 ... 为啥编译没有错却执行不了 ... c语言怎么多次执行 ... c语言没错但是运行不了 ... 判断回文数的c语言程序 ... 为啥c语言没错却执行不了 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网