今天给各位分享c语言程序员考试编程题的知识,其中也会对C语言程序编程题进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、初学编程,大家帮忙看下这道c语言题怎么做?万分感谢2、c语言编程题3、C语言编程题,急求!!!!4、C语言编程题
初学编程,大家帮忙看下这道c语言题怎么做?万分感谢
先给你第一题的,百度知道的这个编辑器真的不适合粘贴代码
#includestdio.h
#includestring.h
#define MAX_ARRAY_SIZE 1024
#define MAX_MAP_SIZE 10
/* 输入数组,连续输入,如:aedabcdaeas */
int inputArray(char *buff) {
int len = 0;
/* 使用fgets来防止缓冲区溢出 */
if (NULL == fgets(buff, MAX_ARRAY_SIZE, stdin)) {
return 0;
}
len = strlen(buff);
/* fgets 返回的数据可能是换行符结尾的,也可能不是,对换行符结尾的进行处理 */
if (buff[len – 1] == ‘\n’) {
buff[len – 1] = ‘\0’;
len -= 1;
}
return len;
}
int processArray(int len, char *chars, char *map) {
/* 保存反向映射便于查找 */
int tmap[128];
int maplen = 0;
int i = 0;
char *p = chars;
memset(tmap, -1, sizeof(int) * 128);
for (i = 0; i len; i++) {
if (*p ‘z’ || *p ‘a’) {
return -*p;
}
if (tmap[*p] == -1) {
if (maplen = MAX_MAP_SIZE) {
return -1;
}
tmap[*p] = maplen;
map[maplen] = *p;
maplen += 1;
}
*p = ‘0’ + tmap[*p];
p++;
}
return maplen;
}
int main() {
/* 用于输入的字符数组 */
char buff[MAX_ARRAY_SIZE];
/* 用于保存转换规则的数组 */
char map[MAX_MAP_SIZE];
/* 保存字符数组长度 */
int len = 0;
int maplen = 0;
int i = 0;
len = inputArray(buff);
if (len = 0) {
puts(“Cancelled”);
} else if (len 10) {
puts(“Not enough 10 chars”);
} else {
maplen = processArray(len, buff, map);
if (maplen = 0) {
puts(“转换结果:”);
for (i = 0; i len; i++) {
printf(“%c “, buff[i]);
}
puts(“”);
puts(“映射规则:”);
for (i = 0; i maplen; i++) {
printf(“%c – %d\n”, map[i], i);
}
puts(“”);
} else if (maplen == -1) {
puts(“Different Chars count is OverLimit of 10”);
} else if (maplen = -2) {
printf(“Unexpected char %c\n”, -maplen);
}
}
return 0;
}
执行结果:
c语言编程题
#include “stdio.h”
#include stdlib.h
#include “time.h”
#define N 10
int main(int argc,char *argv[]){
int a[N],i,j,k,n;
srand((unsigned)time(NULL));
for(k=i=0;iN;printf(++k%20 ? “%3d” : “%3d\n”,a[i++]=rand()%100));
if(k%20)
printf(“\n”);
printf(“Please enter a number…\nn=”);
scanf(“%d”,n);
for(k=N,i=0;ik;i++)
if(n==a[i])
for(k–,j=i–;jk;a[j++]=a[j+1]);
if(k!=N){
printf(“\nDeleted:\n”);
for(j=i=0;ik;printf(++j%20 ? “%3d” : “%3d\n”,a[i++]));
if(j%20)
printf(“\n”);
}
else
printf(“No find…\n”);
return 0;
}
运行样例:
C语言编程题,急求!!!!
DFA 引擎在线性时状态下执行,因为它们不要求回溯(并因此它们永远不测试相同的字符两次)。DFA 引擎还可以确保匹配最长的可能的字符串。但是,因为 DFA 引擎只包含有限的状态,所以它不能匹配具有反向引用的模式;并且因为它不构造显示扩展,所以它不可以捕获子表达式。
传统的 NFA 引擎运行所谓的“贪婪的”匹配回溯算法,以指定顺序测试正则表达式的所有可能的扩展并接受第一个匹配项。因为传统的 NFA 构造正则表达式的特定扩展以获得成功的匹配,所以它可以捕获子表达式匹配和匹配的反向引用。但是,因为传统的 NFA 回溯,所以它可以访问完全相同的状态多次(如果通过不同的路径到达该状态)。因此,在最坏情况下,它的执行速度可能非常慢。因为传统的 NFA 接受它找到的第一个匹配,所以它还可能会导致其他(可能更长)匹配未被发现。
POSIX NFA 引擎与传统的 NFA 引擎类似,不同的一点在于:在它们可以确保已找到了可能的最长的匹配之前,它们将继续回溯。因此,POSIX NFA 引擎的速度慢于传统的 NFA 引擎;并且在使用 POSIX NFA 时,您恐怕不会愿意在更改回溯搜索的顺序的情况下来支持较短的匹配搜索,而非较长的匹配搜索。
使用DFA引擎的程序主要有:awk,egrep,flex,lex,MySQL,Procmail等;
使用传统型NFA引擎的程序主要有:GNU Emacs,Java,ergp,less,more,.NET语言,PCRE library,Perl,PHP,Python,Ruby,sed,vi;
使用POSIX NFA引擎的程序主要有:mawk,Mortice Kern Systems’ utilities,GNU Emacs(使用时可以明确指定);
也有使用DFA/NFA混合的引擎:GNU awk,GNU grep/egrep,Tcl。
举例简单说明NFA与DFA工作的区别:
比如有字符串this is yansen’s blog,正则表达式为 /ya(msen|nsen|nsem)/ (不要在乎表达式怎么样,这里只是为了说明引擎间的工作区别)。 NFA工作方式如下,先在字符串中查找 y 然后匹配其后是否为 a ,如果是 a 则继续,查找其后是否为 m 如果不是则匹配其后是否为 n (此时淘汰msen选择支)。然后继续看其后是否依次为 s,e,接着测试是否为 n ,是 n 则匹配成功,不是则测试是否为 m 。为什么是 m ?因为 NFA 工作方式是以正则表达式为标准,反复测试字符串,这样同样一个字符串有可能被反复测试了很多次!
而DFA则不是如此,DFA会从 this 中 t 开始依次查找 y,定位到 y ,已知其后为a,则查看表达式是否有 a ,此处正好有a 。然后字符串a 后为n ,DFA依次测试表达式,此时 msen 不符合要求淘汰。nsen 和 nsem 符合要求,然后DFA依次检查字符串,检测到sen 中的 n 时只有nsen 分支符合,则匹配成功!
由此可以看出来,两种引擎的工作方式完全不同,一个(NFA)以表达式为主导,一个(DFA)以文本为主导!一般而论,DFA引擎则搜索更快一些!但是NFA以表达式为主导,反而更容易操纵,因此一般程序员更偏爱NFA引擎! 两种引擎各有所长,而真正的引用则取决与你的需要以及所使用的语言!
C语言编程题
1—————————-
#includestdio.h
main()
{
void input(int temp[],int t);
void sort(int y[],int s);
int search(int array[],int mtah);
int a[11],n=11,k,wei;
printf(“input a[10].\n”);
input(a,11);
sort(a,11);
printf(“input the math.\n”);
scanf(“%d”,k);
wei=search(a,10,k);
if(wei!=-1) printf(“%d zai %d shang.\n”,k,wei);
else
{for(k=0;k11;k++)
printf(“%d “,a[k]);}
}
void input(int temp[],int t)/*输入函数*/
{
int i;
for(i=0;it-1;i++)
scanf(“%d”,temp[i]);
}
void sort(int y[],int s)/*排序函数*/
{
int temp,i,j;
for(i=0;is-1;i++)
for(j=0;js-1-i;j++)
{
if(y[j]y[j+1])
{temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;}
}
}
int search(int array[],int g,int mtah)/*查找函数*/
{
int d=0,i;
while(dg-1)
{
if(array[(d+g)/2]math) d=(d+g)/2;
else g=(d+g)/2;
}
if(array[d]!=math) retnue(d);
else
{
for(i=0;i10;i++)
if(array[i]math) break;
for(k=10;k=i;k–)
array[k]=array[k-1];
array[i]=math;
}
}
2————————————–
#includestio.h
main()
{
int add(int x,int y);
int sub(int x,int y);
int mul(int x,int y);
int a,b,he,cha,ji;
printf(“input a b.\n”):
scanf(“%d %d”,a,b);
he=add(a,b);
cha=sub(a,b);
ji=mnl(a,b);
printf(“he=%d,cha=%d,ji=%d.\n”,he,cha,ji);
}
int add(int x,int y)
{
retnue(x+y);
}
int sub(int x,int y)
{
retnue(x-y);
}
int mul(int x,int y)
{
retnue(x*y);
}
3————————————
#includestdio.h
main()
{
float a[10],temp,sum=0,;
int i,j,k;
printf(“input a[10].\n”);
for(i=0;i10;i++)
scanf(“%d”,a[i]);
for(i=0;i9;i++)
{
k=i;
for(j=i+1;j10;j++)/*选择排序*/
if(a[j]a[k]) k=j;
temp=a[k];a[k]=a[i];a[i]=temp;
}
for(i=1;i9;i++)
sum=sum=a[i];
sum=sum/8.0;
printf(“de fen %.2f.\n”,sum);
}
4—————————————–
#includestdio.h
struct stu
{
char xh[10];
char name[20];
float yy;
float jsj;
float sx;
float aver;
};
main()
{
int i,t,js=0,sum=0;
struct sut s[5];
FILE *pf;
float temp;
if((pf=fopen(“cj.dat”,”w”))==NULL)
{
printf(“can’t open file.\n”);
retnue;
}
for(i=0;i5;i++)
{
printf(“input s[%d].\n”,i);
scanf(“%s %s %f %f %f”,s[i].xh,s[i].name,s[i].yy,s[i].jsj,s[i].sx);
fwrite(s[i],sizeof(struct stu),1,pf);
}
fclose(fp);
for(i=0;i5;i++)
a[i].aver=(a[i].yy+a[i].jsj+s[i].sx)/3.0;
temp=a[0].aver;
for(i=1;i5;i++)
{\
printf(“%f\n”,s[i].aver);
if(s[i].aver=90) js++;
if(temps[i].aver) t=i;
sum=sum+a[i].aver;
}
printf(“%s %s %f %f %f %f”,a[t].xh,a[t].name,a[t].yy,a[t].jsj,a[t].sx,a[t].aver);
printf(“\naveger=%f.\n”,sum/5.0);
关于c语言程序员考试编程题和C语言程序编程题的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。