写一程序实现对输入的 n 个字符串进行判定,是否为 C 语言的合法标识符。如果是则输出 1 ,不是则输出 0

作者&投稿:郗冰 (若有异议请与网页底部的电邮联系)
输入一个字符串,判断其是否是C的合法标识符。用c语言编写程序。~

C语言合法标识符由数字,字母,下划线组成。
且第一个字母不能为数字。
于是,根据其定义,可以进行判断,代码如下:
#define is_upper(x) (x>='A' && x='a' && x='0' && x<='9')//数字判断。#define is_down_link(x) (x == '_')//下划线判断。int check_first_char(char x)//判断第一个字符是否合法。{ return is_char(x) || is_down_link(x);//当为字母或下划线时合法。}int check_other_char(char x)//判断其它字符是否合法。{ return is_char(x) || is_down_link(x) || is_num(x);//当为数字,字母或下划线时合法。}int check(char *str)//判断标识符str是否合法,如果合法返回1,否则返回假。{ int i; if(check_first_char(str[0]) == 0) return 0;//检查第一字符。 for(i = 1; str[i]; i ++) if(check_other_char(str[i]) == 0) return 0; //检查其它字符。 return 1;}int main(){ char id[200]; scanf("%s",id);//读入标识符。 if(check(id)) //进行判断并输出结果。 printf("标识符合法
"); else printf("标识符非法
");}

#include
#include
void main()
{
char a[30];
int i,m=0,n;
printf("Please input the length of the string:
");//输入字符串长度
scanf("%d",&n);
getchar();//吃掉上面的回车符
printf("please input the string:
");
gets(a);
if((a[0]!='_')&&!(a[0]='a')&&!(a[0]='A'))//判断首字符是否为字母或下划线
printf("不符合标识符的规定
");
else
{
for(i=1;i<n;i++)
if((a[i]!='_')&&!(a[i]>='a'&&a[i]'A'&&a[i]=0&&a[i]<=9))//判断是否存在不是数字字母下划线的字符
{
m++;
printf("不符合标识符的规定
");
break;
}
if(m==0)
printf("符合标识符的规定
");
}
}

//这个程序基本实现,但是没有剔除关键词,比如for之类,需要的话自己再加

#include<stdio.h>
#include<string.h>

int solve (char c)
{
if(c =='_') return 1;
else if(c>='a' && c<='z') return 2;
else if(c>='A' && c<='Z') return 2;
else if(c>='0' && c<='9') return 3;
else return 4;
}
int op(char *s)
{
int i = 0;
int len = strlen(s);
if(solve(s[0]) <3) {
for(i =1;i<len;i++)
if(solve(s[i]) == 4) break;
if(i == len) return 1;
else return 0;

}
else return 0;

}
int main()
{
int n;
char hui;
char s[85];
scanf("%d",&n);
scanf("%c",&hui);
while(n--) {

gets(s);
int ok = op(s);
printf("%d\n",ok);
}
return 0;
}

这个程序用到词法分析的知识。用c实现比较困难。不知所谓“合法标识符”是否包含语法成分?比如是否判断大小括号是否完整,等等。如果也要判断语法,完成你的要求所需要的工作量相当于写一个C编译器的一半。


如何用vb设计一个程序,可以将输入的10个以上的数字 按大小顺序排列出来...
这样当第九个数拿出来和第十个数比完后,整个数列就变成从小到大排列的了 方法二(叫做冒泡)依次拿第一个数和第二个比,第二个和第三个比,凡是前面的数比后面的数大的话就换位子,当第九个和第十个比完后,第十个位子永远是最大的数。然后再对前9个数再做一次这个事情,那第九个数就变9...

C语言编写一个程序,实现如下功能:从键盘输入一个三位数,求各位数字之...
include "stdio.h"void main(){ int n,sum=0;printf("请输入一个三位数:");scanf("%d",&n);sum=n\/100+n%100\/10+n%10;\/\/百位数+十位数+个位数 printf("这个三位数各位数字之和是%d\\n",sum);} 结果:

设计并实现一个程序,由键盘输入一个大于0的整数,统计这个数是由多少个...
如果输入有误,则提示用户重新输入。然后,我们使用另一个 `while` 循环对输入的整数进行逐位分解,并根据每一位上的数字是奇数还是偶数,分别将奇数计数器和偶数计数器加1。最后,程序将输出输入的整数中包含的偶数和奇数的个数。请注意,上面的代码中使用了两个 `while` 循环,第一个用于获取用户...

·3、 编写一程序,要求从键盘输入10个整数,然后对这10个数进行降序排序...
下面是java编写的程序,将下面的程序代码复制并保存为vip.java class sort { int num[]=new int[10];void get_num(int num1[]){ int i;for(i=0;i<10;i++)num[i]=num1[i];}\/\/获取用户输入的数据 void sort(){ int mid;\/\/用来作为排序时的中间变量 int i,j;\/\/排序时的循环控制...

C语言。编写程序。实现输入n个整数。输出其中最小的数。并指出是第几...
1、首先需要定义一个Max最小值变量。2、然后把首地址的值赋予最小值。3、接下来就可以开始进行便利查找。4、如果有个数大于最大值便可以自动替换。5、然后就可以把最小值进行输出。6、然后进行运行后,就可以看到屏幕上显示最小值。

求解C++题目:编写一个边输入数据边对数据进行插入排序的程序,求各位...
程序使用一个数组来存储输入的数据,以-1作为输入结束标志。每输入一个新的数,就使用插入排序算法对已输入的数据进行排序。最后输出已排序的数据。值得注意的是,这个程序实现了边输入数据边进行插入排序,但是这种方式并不是最优的,因为每输入一个新的数就要对整个已输入的数据进行排序,时间复杂度是O...

请用程序实现:输入一个大于1的正整数num;如果num为偶数,+就将它变为...
好的,我可以为您编写一个 Python 程序实现这个功能。以下是代码:```ini num = int(input("请输入一个大于1的正整数:"))while(num > 1 and num % 2 == 0):num = num \/\/ 2 print("最终的结果为:", num)```程序运行时,会要求您输入一个正整数,如果输入的是偶数,程序就会将它不...

模拟计算器的功能,编写一个程序,能够根据用户输入的运算符(+ - * \/...
include<stdio.h> main(){ double a,b,c;char ch,ch1;printf("这是一个简单的计算程序,只支持±整数和小数的加减乘除运算,请输入运算表达式,如:1+2,按回车键。\\n");scanf("%lf%c%lf%c",&a,&ch,&b,&ch1);switch(ch){ case '+':c=a+b;printf("%lf+%lf=%.10lf\\n",a,...

在C语言中如何实现用键盘输入一个字符串,并打印出来?
1.首先需要先定义一个存放字符串的数组空间,如给字符串100个数组空间。2.接着使用gets()函数来获取键盘输入的字符串。一般格式为gets(定义的字符数组名)。3.然后再使用puts()函数来输出之前输入的字符串内容。一般格式puts(定义的字符数组名)。4.最终运行程序,即可成功实现输入字符串,然后原样在...

编写程序,实现10个整数的输入,求和,升序排序,输出:求和结果及平均值...
include<stdio.h> void sort(int *p){ int i,j,t;for(i=0;i<10;i++)for(j=0;j<10-i;j++)if(p[j]>p[j+1]){ t=p[j];p[j]=p[j+1];p[j+1]=t;} } main(){ int a[10],i,sum=0;float average;for(i=0;i<10;i++){ scanf("%d",&a[i]);sum+=a[i];}...

庆安县13797308546: 写一程序实现对输入的 n 个字符串进行判定,是否为 C 语言的合法标识符.如果是则输出 1 ,不是则输出 0 -
狂迫曲坦: //这个程序基本实现,但是没有剔除关键词,比如for之类,需要的话自己再加#include<stdio.h>#include<string.h> int solve (char c) { if(c =='_') return 1; else if(c>='a' && c<='z') return 2; else if(c>='A' && c<='Z') return 2; else if(c>='0' && c<='9') return ...

庆安县13797308546: 求一个自己做的c语言的函数,可以实现输入n个字符串的排序,并且对其进行排序 -
狂迫曲坦: //普通方法 void strSort(char arr[][100], int strCount) { int i, j, k; for (i = 0; i < strCount; i ++) { k = i; for (j = i; j < strCount; j ++) { if (strcmp(arr[k], arr[j]) == 1)k = j; } char temp[100]; strcpy(temp, arr[k]); strcpy(arr[k], arr[i]); strcpy(arr[i], temp); } }

庆安县13797308546: 编写一个程序,从输入读取n个字符,吧输入的数据存储到一个字符组中,并输出读入的信息
狂迫曲坦: #include//malloc函数和free函数头文件 int main() { int n,i; char c,*p; p=(char*)malloc(sizeof(char)*100);//分配长度为100的内存区 scanf("%d",&n); getchar(); if(n>100)//输入超过100个字符,程序就要非正常退出 exit(EXIT_FAILURE); for(i=0;i<n;i++) { scanf("%c",&c); p[i]=c; } p[n]='\0'; printf("%s\n",p); free(p);//释放内存 return 0; }

庆安县13797308546: 编写一个程序,从输入读取n个字符,把读入的数据储存到一个字符数组中,并输出读入的信息.(用C语言程序编写)
狂迫曲坦:#include <stdio.h> #include <conio.h> int main() { char str[100]; printf("请输入字符:"); gets(str); printf("输出你输入的字符:"); puts(str); getch();getch(); return 0; }

庆安县13797308546: 编写一个C语言程序以数组形式存放n个字符串,并且这些字符串以升序排序 -
狂迫曲坦: #include<stdio.h> #include<string.h> main() {char *pstr[50],*pstr1;char str[50][50];int i,j,n;printf("input n:");scanf("%d",&n);//获取缓冲区中的回车符getchar();printf("input %d string:\n",n);//输入字符串for(i=0;i<n;i++)gets(str[i]); ...

庆安县13797308546: 设计一个程序,可以实现以下功能:接受从键盘输入的n个字符串,将其中任意两个字符串连接后输出. -
狂迫曲坦: 谁然不知道并将后面是什么? 但你似乎是跟字符串中字符的大小有关,我先告诉点相关的: 首先字符是可以直接比较大小的,即可以直接输入“a>b”之类的进行大小比较. 然后可以通过 max:=s[1];c:=length(s); for i:=1 to c do if s[i]>max then begin max:=s[i];k:=i;end; 寻找最大的字符. 最后调到第一位,可以s:=max+s;delete(s,i,1);

庆安县13797308546: 用C语言编写程序,输入n个字符串,输出其中最大的字符串
狂迫曲坦:实验正常,不解释.. #include <stdio.h> #include <string.h> int main() { char max[100]; char s[1000][1000]; int i,n=0 ; printf("n="); scanf("%d",&n); for (i=0;i<n+1;i++) gets(s[i]); strcpy(max,s[0]); for (i=1;i<3;i++) if (strcmp(max,s[i])<0) strcpy(max,s[i]); printf("%s\n",max); return; }

庆安县13797308546: 输入n个字符串(长度小于20)存入二维数组c中,编写程序对其进行排序(由小到大)并按次序输出. -
狂迫曲坦: 假定字符串个数不超过20个,每个字符串长度小于20,开数组 char s[21][20]; 最后一个元素 用于做字符串交换时的工作单元.字符串比较 用 strcmp(), 复制用 strcpy(), 输入用 gets(), 清除输入缓冲器中的剩余字符用 fflush(stdin); ...

庆安县13797308546: 如何实现n个字符串的排列,并输出…… -
狂迫曲坦: 在这里: http://wenwen.sogou.com/z/q878725618.htm注:数字串的全排序程序如下: #include #include #include #define N 81 char w[N]; perm(int n, char *s) { char s1[N]; int i; if(n<1) printf("%s\n",w); /* 一个排列生成输出 */ else { strcpy(s1,s)...

庆安县13797308546: 用c语言编写程序:输入正整数n,然后输入n个字符串,输出其中最大的字符串 -
狂迫曲坦: #include#include void main() {int i,n;char str[20],max[20]; printf("请输入一个数:"); scanf("%d",&n); getchar(); for(i=1;i{printf("请输入字符串:"); gets(str); if(i==1||strcmp(max,str)} printf("最大的字符串为:%s\n",max); }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网