一个c语言问题?

2024-11-01 16:24:55
推荐回答(5个)
回答(1):

结果是123456abcdedf。
sscanf()的功能是在第一个字符串中取出满足第二个字符串的格式存入第三个参数中。
%[1-9a-z]表示在第一个字符串中取出1-9和a-z的字符存入buf中。
那么大写字母就不满足条件了,所以结果是123456abcdedf。
望采纳。

回答(2):

会执行。getHex把输入的整数转成16进制字符串,存在s里面。s是字符串,也就是以字符0结尾的字符数组。while循环体循环打印该字符数组的字符,当碰到0字符的时候测试逻辑条件为假,退出循环。所以,return
0会被执行。

回答(3):

对于这个问题,你必须把getHex这个函数的函数体贴出来,
如果在getHex函数里面将s的最后一个元素置为'\0'的话,那么return
0
肯定会执行,如果在getHex函数中对s进行操作之后,没有将其尾部元素置为'\0'的话
return
0
就不执行。

回答(4):


你......是不是谌卫军老师班上的...然而我也很菜(逃..

#include
int is_same(char*str,char*s)//str在s中的出现次数
{
char*p;
char str2[100];
int flag=0;
strcpy(str2,s);
p=strtok(str2," ");//可以了解一下strtok函数
while(p!=NULL)
{
if(strcmp(p,str)==0)
{
 flag++;
}
p=strtok(NULL," ");
}
return flag;
}
int main()
{
    char s[500],word[50],bef[500],done[500];
    int ge[250],i,j,k,m;
    gets(s);
    ge[0]=0;
    for(i=0,j=1;i<=strlen(s)-1;i++)//记下空格位置
    {
        if(s[i]==' ')
        {
            ge[j]=i;
            j++;
        }
    }
    ge[j]=strlen(s);
    m=j;
    for(j=0,k=0;j        {
            word[k]=s[j];
            k++;
        }
        word[k]='\0';
        strcat(done,word);
        strcat(done," ");
    for(i=1;i    {
        k=0;
        for(j=ge[i]+1;jge[i];j++)//从第二个单词开始一个一个的取出来存在word[]内
        {
            word[k]=s[j];
            k++;
        }
        word[k]='\0';
        k=0;
        for(j=0;j        {
            bef[k]=s[j];
        }
        bef[k]='\0';
        if(is_same(word,bef)==0)//第一次出现
        {
            strcat(done,word);
            strcat(done," ");
        }
        if(is_same(word,bef)==1)//第二次出现
        {
            strcat(done,word);
            strcat(done,word);
            strcat(done," ");
        }
        else;//第三次或更多
    }
    puts(done);
    return 0;//不知道为什么前面会有几个空格
}




回答(5):

int
max(int
x,int
y)
{int
z;
if(x>y)
z=x;
else
z=y;
return(z);
}
这是一个函数,返回return(z)是这个函数的返回值。主函数void
main()没有返回值,但是程序里你想结束程序的地方可以用return返回。不带返回值。