c语言上机题目
⑴ c语言数据结构上机题
#include "stdafx.h"
#include<iostream>
using namespace std;
typedef struct LNode
{
char data;
struct LNode * next;
}LNode,* LinkList;
void CreateList(LinkList &L)//创建链表存放26个字母组成的线性表
{
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
char c='z';
for(int i=26;i>0;i--)
{
LNode *p;
p=(LinkList)malloc(sizeof(LNode));
p->data=c--;
p->next=L->next;
L->next=p;
}
}
bool ListInsert(LinkList &L,int i,char c)//在第i个位置插入字母c
{
LNode * p=L;int j=0;
while(p&&j<i-1)
{
p=p->next;
++j;
}
if(!p||j>i-1)
return false;
LinkList s=(LinkList)malloc(sizeof(LNode));
s->data=c;
s->next=p->next;
p->next=s;
return true;
}
void main()
{
LinkList L;
CreateList(L);//1.创建链表存放26个字母组成的线性表
char c;int i;
cout<<"输入插入的字母"<<endl;
cin>>c;
cout<<"输入插入的位置(整数)"<<endl;
cin>>i;
if(ListInsert(L,i,c))//在第i个位置插入字母c
{
while(L->next!=NULL)//将插入后的线性表输出
{
cout<<L->next->data;
L=L->next;
}
}
}
//辛苦写完...刚调试通过...加分啊..
调试是在C++环境下调试的,如果你要在C环境下..把
cout<<L->next->data; 改为:
printf("%d",L->next->data);
cin>>c;改为:scanf("%c",c);
就ok了......
ps: o_o一般上机都是C++吧......
⑵ C语言 关于C语言上机题目的问题。
将fun函数改为
void fun(char *tt, int pp[])
{
int i,j;
for(i=0;i<26;i++)
pp[i]=0;
for(i=0;i<1000;i++)
{
if(tt[i]>='a'&&tt[i]<='z')
{
j=tt[i]-97;
pp[j]++;
}
if(tt[i]=='\0')
break;
}
}
或者是
void fun(char *tt, int pp[])
{
int i,j;
for(i=0;i<26;i++)
pp[i]=0;
for(i=0;tt[i]!='\0';i++)
if(tt[i]>='a'&&tt[i]<='z')
{
j=tt[i]-97;
pp[j]++;
}
}
因为给定字符串和由aa输入的字符串是不同的:
1.输入字符串因为定义了char aa[1000];,编译器编译时会将aa中的每个元素置0,所以aa中在你输入的数据后全是'\0';
2."a bosom friend afar brings a distant land near"是存在内存中的,在near后的'\0'后会有其他的数据存在,并不全是'\0',也可能会有a~z内的字符数据,所以产生错误结果。
在fun中 检测到'\0'后 即字符串结束后应结束循环。
⑶ 大一C语言上机题目
语法错误:
int
y,m,d;//d重定义,跟结构体同名了,要么改结构体名称,要没改成员名称
next(struct
d
dt)
//没有类型,返回值是结构类型,应该在前面加上结构体的实体
nextd.d++//缺分号
d2=next()://①括号里没有参数,②后面是冒号不是分号
getch();
//
这句要干什么?没看明白,编译出错
逻辑问题:
①p=leap(dt.y);
//
这里好像逻辑上有问题,导致日期计算不对,需要修改
②要求输入三行,这个程序改完就能输入一次就退出了,需要仔细改一下
时间问题,没太仔细看,好好改改吧,挺多问题的
⑷ c语言的几道上机题目怎么就做
第一题
{ int i; double s, t;
/**********found**********/
s=0;
/**********found**********/
for(i=1; i<=n; i++)
{ t=2.0*i;
/**********found**********/
s=s+(2.0*i-1)*(2.0*i+1)/(t*t);
}
return s;
}
第二题
{ int i=0,j,find=0,rmax,c,k;
while( (i<M) && (!find))
{ rmax=a[i][0]; c=0;
for(j=1; j<N; j++)
if(rmax<a[i][j]) {
/**********found**********/
rmax=a[i][j]; c= j; }
find=1; k=0;
while(k<M && find) {
/**********found**********/
if (k!=i && a[k][c]<=rmax) find= 0;
k++;
}
if(find) printf("find: a[%d][%d]=%d\n",i,c,a[i][c]);
/**********found**********/
i++;
}
第三题
{ long d=0;
while(*s)
if(isdigit( *s)) {
/**********found**********/
d=d*10+*s-'o';
/**********found**********/
s++;}
return d;
}
long fun( char *a, char *b )
{
/**********found**********/
return ctod(a)+ctod(b);
}
⑸ C语言上机题目:输入一个字符串,然后按逆序重新存放该字符串.
#include<string.h>
#include<stdio.h>
int main()
{
char a[100];
int i,n,j=0,temp;
gets(a);
n=strlen(a);
for(i=0;i<n/2;i++){
temp=a[i];
a[i]=a[n-1-i];
a[n-1-i]=temp;}
a[n]='