爱问知识人 爱问教育 医院库

C语言程序设计题, 请帮忙

首页

C语言程序设计题, 请帮忙

1、编写一程序,输入任一整数num,完成以下两项工作:
(1)将该整数的逆序打印出来,例如,输入1234,则输出结果为:“整数1234的逆序数为4321”。
(2)计算该整数的各位之和,例如,输入1234,则输出结果为:“整数1234的各位之和为10”。

2、一个素数,当它的数字位置对换以后仍为素数,这样的数称为绝对素数。
编写程序,完成以下两项工作:
(1)写出判断一个数是否为素数的函数。
(2)编写程序,求出所有的两位绝对素数。

3、某班有30位同学,每位同学有期中和期末成绩以及唯一的6位学号。请编写一个程序,按平均分由低到高的顺序输出每位同学的学号、总分、平均分数。其中,总分=期中成绩+期末成绩,平均分=总分/2。要求使用3个函数分别实现有关任务:
(1)void init():输入原始数据:学号、期中成绩、期末成绩。并计算平均分、总分。
(2)void sort(): 排序。
(3)void result(): 输出结果。

4由键盘键入一个整数n(<=1000),再在屏幕上输出满足如下条件的全部数组(每个数组的元素按顺序放在一个圆括号内)及数组的个数T(n)。
(1) 同一数组内各元素互不相同。
(2) 每个数组至少有一个元素,最后一个元素均为n,且每个元素都不小于它前面的一个元素的平方。
例:键入n=5,则正确的输出应为:
(5), (1,5), (2,5), (1,2,5)
T(n)=4
请写出完整的源程序。

提交回答
好评回答
  • 2009-09-23 17:24:09
      /*********************************************************************
    呵呵,代码来了,太长,只好把上面几个题的删了。
    还有,其实每个链表以及相关的函数,最好有个专门的头文件和源文件,全都凑
    在一起的做法很不好。
       *********************************************************************/ #include #include #include typedef struct INT_LIST { int i_numb; INT_LIST* last; INT_LIST* next; }ILIST,*LIST_PTR; LIST_PTR CreatList(int iMax); LIST_PTR AddNumber(LIST_PTR listPtr,int iNumb); void FreeList(LIST_PTR listPtr); LIST_PTR GetTail(LIST_PTR listPtr); void printList(LIST_PTR listPtr); LIST_PTR CopeList(LIST_PTR newList,LIST_PTR oldList); LIST_PTR CopeListBit(LIST_PTR newList,LIST_PTR oldList, int max); LIST_PTR SetList(LIST_PTR listPtr,int iPos,int iNumb); int GetData(LIST_PTR listPtr,int iPos); int SameList(LIST_PTR list1,LIST_PTR list2); int ListLong(LIST_PTR list1); typedef struct LISTVECTOR { LIST_PTR list; LISTVECTOR* last; LISTVECTOR* next; }LVECTOR,*VECTOR_PTR; VECTOR_PTR GreatVector(int iMax); VECTOR_PTR AddList(VECTOR_PTR vPtr,LIST_PTR lPtr); void FreeVector(VECTOR_PTR vPtr); VECTOR_PTR GetVTail(VECTOR_PTR vPtr); void printVector(VECTOR_PTR vPtr); int HaveSameList(VECTOR_PTR vPtr, LIST_PTR lPtr); LIST_PTR GetBaseList(int iNumb,int* iMax); LIST_PTR GetMinList(int iNumb,int iMax); VECTOR_PTR DealLast(VECTOR_PTR vPtr, LIST_PTR lMaxPtr, LIST_PTR lMinPtr, int iPos, int iMaxPos); VECTOR_PTR DealNext(VECTOR_PTR vPtr, LIST_PTR lMaxPtr, LIST_PTR lMinPtr, LIST_PTR lNewPtr, int iPos, int iMaxPos); /////////////////////////////////////// // int main() { LIST_PTR basePtr=NULL; VECTOR_PTR vectorPtr=NULL; int iInput; int iMaxNumb=0; printf("please input a number ! : "); scanf("%d",&iInput); basePtr=GetBaseList(iInput,&iMaxNumb); vectorPtr=AddList(vectorPtr,basePtr); LIST_PTR maxPtr=NULL; LIST_PTR minPtr=NULL; for(int i=iMaxNumb; i>=1; i--) { maxPtr=CopeListBit(maxPtr,basePtr,i); minPtr=GetMinList(iInput,i); vectorPtr=DealLast(vectorPtr,maxPtr,minPtr,i,i); FreeList(maxPtr); maxPtr=NULL; FreeList(minPtr); minPtr=NULL; } VECTOR_PTR head=vectorPtr; int iMax=0; while(head->next) { head=head->next; iMax++; } printVector(vectorPtr); printf("\nT(n)=%d\n",iMax); FreeVector(vectorPtr); FreeList(basePtr); return 0; } // /////////////////////////////////////// LIST_PTR CreatList(int iMax) { iMax= iMax ? iMax : 1; LIST_PTR listPtr; LIST_PTR tailPtr; listPtr=(LIST_PTR) malloc(sizeof(ILIST)); listPtr->last=NULL; listPtr->next=NULL; listPtr->i_numb=0; tailPtr=listPtr; for(int i=2; inext=(LIST_PTR) malloc(sizeof(ILIST)); tailPtr->next->last=tailPtr; tailPtr=tailPtr->next; tailPtr->next=NULL; tailPtr->i_numb=0; } return listPtr; } void FreeList(LIST_PTR listPtr) { if(!listPtr) { return; } while(listPtr->next) { listPtr=listPtr->next; free(listPtr->last); } free(listPtr); listPtr=NULL; } LIST_PTR AddNumber(LIST_PTR listPtr,int iNumb) { if(!listPtr) { listPtr=CreatList(1); listPtr->i_numb=iNumb; return listPtr; } LIST_PTR tailPtr=GetTail(listPtr); tailPtr->next=(LIST_PTR) malloc(sizeof(ILIST)); tailPtr->next->last=tailPtr; tailPtr=tailPtr->next; tailPtr->next=NULL; tailPtr->i_numb=iNumb; return listPtr; } LIST_PTR GetTail(LIST_PTR listPtr) { if(!listPtr) { return NULL; } LIST_PTR tailPtr; tailPtr=listPtr; while(tailPtr->next) { tailPtr=tailPtr->next; } return tailPtr; } LIST_PTR CopeList(LIST_PTR newList,LIST_PTR oldList) { if(!oldList) { FreeList(newList); newList=NULL; return newList; } if(newList) { FreeList(newList); } LIST_PTR tailPtr=oldList; while(tailPtr->next) { newList=AddNumber(newList,tailPtr->i_numb); tailPtr=tailPtr->next; } return newList=AddNumber(newList,tailPtr->i_numb); } void printList(LIST_PTR listPtr) { if(!listPtr) { return; } LIST_PTR tailPtr=GetTail(listPtr); printf("("); while(tailPtr->last) { printf("%d,",tailPtr->i_numb); tailPtr=tailPtr->last; } printf("%d)",tailPtr->i_numb); } VECTOR_PTR GreatVector(int iMax) { iMax= iMax ? iMax : 1; VECTOR_PTR tailPtr; VECTOR_PTR vPtr=(VECTOR_PTR) malloc(sizeof(LVECTOR)); vPtr->last=NULL; vPtr->next=NULL; vPtr->list=NULL; tailPtr=vPtr; for(int i=2; inext=(VECTOR_PTR) malloc(sizeof(LVECTOR)); tailPtr->next->last=tailPtr; tailPtr=tailPtr->next; tailPtr->next=NULL; tailPtr->list=NULL; } return vPtr; } VECTOR_PTR AddList(VECTOR_PTR vPtr,LIST_PTR lPtr) { if(!vPtr) { vPtr=GreatVector(1); CopeList(vPtr->list,lPtr); } VECTOR_PTR tailPtr=GetVTail(vPtr); tailPtr->next=(VECTOR_PTR) malloc(sizeof(LVECTOR)); tailPtr->next->last=tailPtr; tailPtr=tailPtr->next; tailPtr->next=NULL; tailPtr->list=NULL; tailPtr->list=CopeList(tailPtr->list,lPtr); return vPtr; } void FreeVector(VECTOR_PTR vPtr) { if(!vPtr) { return; } while(vPtr->next) { vPtr=vPtr->next; FreeList(vPtr->last->list); free(vPtr->last); } FreeList(vPtr->list); free(vPtr); vPtr=NULL; } VECTOR_PTR GetVTail(VECTOR_PTR vPtr) { if(!vPtr) { return NULL; } VECTOR_PTR tailPtr=vPtr; while(tailPtr->next) { tailPtr=tailPtr->next; } return tailPtr; } void printVector(VECTOR_PTR vPtr) { if(!vPtr) { return; } VECTOR_PTR tailPtr=vPtr; int i=0; int length=0; while(tailPtr->next) { printList(tailPtr->list); tailPtr=tailPtr->next; if(!(i++%3)) { printf("\n"); } else { printf("\t\t"); } } printList(tailPtr->list); } LIST_PTR GetBaseList(int iNumb,int* iMax) { iNumb= iNumb ? iNumb : 1; *iMax=1; LIST_PTR baseList=NULL; baseList=AddNumber(baseList,iNumb); if(1==iNumb) { return baseList; } int numb=(int) sqrt(iNumb); while(numb>1) { baseList=AddNumber(baseList,numb); numb=(int) sqrt(numb); *iMax=*iMax+1; } *iMax=*iMax+1; return baseList=AddNumber(baseList,numb); } LIST_PTR GetMinList(int iNumb,int iMax) { LIST_PTR minList=NULL; iMax= iMax ? iMax : 1; minList=CreatList(iMax); minList=SetList(minList,1,iNumb); int lastNumb=2; int count=iMax; switch(iMax) { case 1: break; case 2: minList=SetList(minList,2,1); break; default: minList=SetList(minList,count--,1); while(1next) { newData=newData->next; } else { return listPtr; } } newData->i_numb=iNumb; return listPtr; } int GetData(LIST_PTR listPtr,int iPos) { if(!listPtr || !iPos) { return -1; } LIST_PTR dataPtr=listPtr; for(int i=2; inext) { dataPtr=dataPtr->next; } else { return -1; } } return dataPtr->i_numb; } VECTOR_PTR DealLast(VECTOR_PTR vPtr, LIST_PTR lMaxPtr, LIST_PTR lMinPtr, int iPos, int iMaxPos) { if(iPos=minNumb) { newPtr=NULL; newPtr=CopeList(newPtr,lMaxPtr); newPtr=SetList(newPtr,iPos,iNumber); if(iPos=minNumb) { lNewPtr=SetList(lNewPtr,iPos,iNumber); if(iPosnext) { break; } newList=AddNumber(newList,tailPtr->i_numb); tailPtr=tailPtr->next; } return newList=AddNumber(newList,tailPtr->i_numb); } int SameList(LIST_PTR list1,LIST_PTR list2) { if(!list1||!list2) { return 0; } int max; if((max=ListLong(list1))!=ListLong(list2)) { return 0; } LIST_PTR tail1=list1; LIST_PTR tail2=list2; for(int i=1; ii_numb != tail2->i_numb) { return 0; } tail1=tail1->next; tail2=tail2->next; } return 1; } int ListLong(LIST_PTR list1) { LIST_PTR tail=list1; int i=0; while(tail) { tail=tail->next; i++; } return i; } int HaveSameList(VECTOR_PTR vPtr, LIST_PTR lPtr) { VECTOR_PTR tailV=vPtr; while(tailV) { if(SameList(tailV->list,lPtr)) { return 1; } tailV=tailV->next; } return 0; } /* 修改一下,把引用换成指针 */ 。
      

    S***

    2009-09-23 17:24:09

其他答案

    2009-10-15 19:55:30
  •   /*
    前三个题,比较简单,我就不做了,我把第四个题目的答案发上来给大家参考:
    */
    #include 
    int main()
    {
    	int	i		= 0,
    		j		= 0,
    		nSource	= 0,
    		nCount	= 0,
    		nT		= 0;
    	while( 1 )
    	{
    		do
    		{
    			printf( "Enter the number:( 0 to quit )\n" );
    			scanf( "%d", &nSource );
    			if( nSource  1000 );
    		nCount = 0;
    		for( i = 1; ( i * i > j ) & 1 ) == 1 )
    				{
    					printf( "%d,", j + 1 );
    				}
    			}
    			printf( "%d)\n", nSource );
    		}
    		printf( "T(n) = %d\n", nT);
    	}
    	return 0;
    }。
      

    游***

    2009-10-15 19:55:30

类似问题

换一换
  • 软件 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...
最新问答 推荐信息 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):