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]='