思路:按题意,用指针遍历字符串st,使用标识碰圆变量flag首次遇到字母置1并计数,遇到空格时flag重置0。
注意:本程序不考虑夹杂非字母的情况,请规范输入。比蔽芹如“I am a stu**dent”,stu**dent将作为一个单词识别。
下面是代码:
#include <stdio.h>
int GetWordNum(char st[])
{
char *p=st
int cnt=0,flag=0
while(*p)
{
if(flag==0 &&((*p>='a' &&*p<='z') || (*p>='A' &&*p<='Z')))
cnt++,flag=1
if(flag &&*p==' ')
宏吵毕 flag=0
p++
}
return cnt
}
int main()
{
char str[]="I am a student"
printf("%s共计单词个数%d\n",str,GetWordNum(str))
return 0
}
int main() {int num1[20], num2[20], num3[20], num4[20]
int i,j,j1=0,j2=0,k1=0,k2=0,tmp,flag=0
char a=0
while(a!= '\n') {
scanf("%d",&num1[j1++])
a= getchar()
}
a=0
while(a != '\n'){
scanf("%d", &num2[j2++])
a= getchar()
}
for (i = 0 i <j1 i++) {
for (j = 0 j<j2 j++) {
if (num1[i] == num2[j]) {
flag=1
}
}
if(flag){
局昌培num3[k1++]=num1[i]
}else{
num4[k2++]=num1[i]
}
flag=0
}
for (i = 0 i <j2 i++) {
for (j = 0 j <j1 j++) {
if (num2[i] == num1[j]) {
flag=1
}
}
if(!flag){
num4[k2++]=num2[i]
}
flag=0
}
for (i = 0 i < (k2-1) i++) {
for (j = i+1j < k2 j++) {
if (num4[i] > num4[j]) {
tmp = num4[i]
num4[i] = num4[j]
num4[j] = tmp
}
}
}
for (i = 0 i < k2 i++) {
printf("%d ", num4[i])
桐唯 }
printf ("\n")
for (i = 0 i < (k1-1) i++) {
for (j = i+1j < k1 j++) {
迅亮 if (num3[i] > num3[j]) {
tmp = num3[i]
num3[i] = num3[j]
num3[j] = tmp
}
}
}
for (i = 0 i < k1 i++) {
printf("%d ", num3[i])
}
return 0
}
定义数组n[5]时,前三个元素前手n[0]~n[2]都赋值为0,后两个元素n[3]和n[4]没有涉及,但系统自动默认给它们赋值也是0。后面的循环只对n[0]~n[2]重新分别赋值为1、2、3,亦未对后面两个元素赋值,所以n[3]和n[4]的值都仍然是0。
最后打印n[3]的值,当然盯悔雹输出的是0。
故,程序运行的结果是输出一个0。凯帆
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)