我有一个家庭任务编写一个程序,用户输入他的姓名和输出,输出应该是首字母。 问题是应用这个程序我会得到一行重复10次的首字母。
如何才能获得一对首字母的输出?
我已经搜索了网站和本网站,并尝试应用返回和休息等内容,但这对我没有帮助。
以下是代码:
#include <cs50.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main (int argc, string argv[])
{
// get string of the text
string s = GetString();
// output the initials of the name
if (s != NULL)
for (int i = 0; i < argc; i++) // was for (…; i = 0)
{
for (int j = 0, n = strlen(argv[i]); j < n; j++) // was for (…; j = 0)
{
printf ("%c%c", argv[1][0], argv[2][0]);
}
return 0;
}
}
答案 0 :(得分:2)
这是无限循环,因为i和j被重新分配为0。 &#34; for循环&#34;结构应该像: for(init; condition; increment) 请使用以下&#34; for loop&#34;在你的程序中。
for (int i = 0; i < argc; i++)
{
for (int j = 0, n = strlen(argv[i]); j < n; j++)
获取Name的首字母。将输入(名称)作为String并查找字符串的长度(length_of_input)并使用以下代码:
for(int i=0; i< (length_of_input-1); i++){
//First letter is always initial
if(i==0){
// print character at i position
printf ("%c",name[i]);
}
//if there is space, then next character is initial
if(name[i] == ' '){
printf ("%c",name[i+1]); //print next character
}
}
答案 1 :(得分:1)
你的内循环永远不会完成,因为永远不会达到停止条件。
for (int j = 0, n = strlen(argv[i]); j < n; j = 0)
你很可能意味着
for(int j = 0, n = strlen(argv[i]); j < n; j++)
正如Varsha所指出的,外环也存在同样的问题。似乎你需要梳理你对C循环的了解:))