[英]Output not showing in C
我正在編寫一個代碼,它必須在單詞中間之前或之后識別單詞中的字母“t”或“T”。 如果單詞的前半部分確實包含“t”或“T”,則程序應 output a 1。如果前半部分不包含字母“t”或“T”,但后半部分包含,則程序應為 output a 2。否則,如果單詞中根本沒有“t”或“T”,則程序的 output 應為 -1。 輸入的單詞不會超過 50 個字母。
#include <stdio.h>
#include <string.h>
int main() {
char word[50];
int i = 0, length, t = 0, T = 0;
scanf("%s", word);
length = strlen(word);
t = word[i] == 't';
T = word[i] == 'T';
while(!t || !T) {
if((t || T) && i <= length / 2) {
printf("%d", '1');
} else if((t || T) && i > length / 2) {
printf("%d", '2');
//}else{
// printf("%d", '-1');
}
i++;
}
return 0;
}
如果我輸入任何單詞並按 Enter,則不會打印任何內容。 另一件事是,當我從底部的兩行中刪除注釋斜線時,程序會進入無限循環。 有人可以幫忙嗎?
這聽起來像是一項學校作業,因此我將專注於建議/批評您的代碼,而不是提供解決方案。
我的第一個建議是使用for
循環而不是while
循環。 C 中的經驗法則是僅在您實際上不知道程序需要查看多少內容時才使用while
循環。
您已經有了字符串的長度,因此將 for 循環設置為每個字符只循環一次。
接下來,您需要更改使用printf
的方式。 %d
格式說明符用於打印整數,但您傳遞的是'1'
。 這不是 integer,它是符號1的 ascii 表示(實際上它的值為 49,有關更多信息,請參見ascii 表)
您可以將值1
傳遞給printf
,或者使用需要 ascii 字符的%c
說明符。
更好的是,只需說printf("1");
這不會讓你一路走到那里,但我認為它奠定了基礎,這樣你就可以找到解決方案!
條件!t || !T
!t || !T
用作循環條件沒有意義...問問自己循環將如何結束? 你只需要檢查i
小於length
二、作業t = word[i] == 't'; T = word[i] == 'T';
t = word[i] == 't'; T = word[i] == 'T';
循環之外沒有任何意義...您將只是指向字符串的零索引...您應該檢查所有字符
三、printf行需要使用%d
第四,你似乎沒有得到程序在循環內打印的目的會導致打印很多數字,你只想知道是否有 t 或 T 你需要打印單行。你可以使用變量int result=0;
保存您想要的值並在最后打印它...當然您需要在if((t || T) && i <= length / 2)
和if((t || T) && i > length / 2)
中使用break
語句if((t || T) && i > length / 2)
因為不需要更多的搜索
第五,你應該在無聊和詢問之前重新閱讀、重新思考、重新編碼作業
第六,通過修改代碼有一個工作版本,但是您應該在查看解決方案之前嘗試編寫一個好的解決方案,因為最好自己解決您的問題
#include <stdio.h>
#include <string.h>
int main() {
char word[50];
int i = 0, length, t = 0, T = 0;
scanf("%s", word);
length = strlen(word);
int result=0;
while( i<length) {
t = word[i] == 't';
T = word[i] == 'T';
if((t || T) && i <= length / 2) {
result=1;
break;
} else if((t || T) && i > length / 2) {
result=2;
break;
}else{
result=-1;
}
i++;
}
printf("%d",result);
return 0;
}
int main()
{
char name[20];
int age;
int siblings;
int childrens;
printf ("Hello my name is A.I, what is your name? \n");
scanf("%s", &name);
printf("how old are you : \n");
scanf("%d",&age);
printf("how many siblings you have: \n");
scanf("%d", &siblings);
printf("how many children you have: \n");
scanf("%d", &childrens);
printf("so your name is : %s \n", name);
printf("and your age is : %d \n", age);
printf("you have siblings : %d\n", siblings);
printf("so you have childrens : %d\n", childrens);
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.