C语言题目求解 c语言题目,求解!

c\u8bed\u8a00\u9898\u76ee\uff0c\u6c42\u89e3\uff01

\x\u5c31\u662f16\u8fdb\u5236\u7684\uff0c\0\u5c31\u662f\u96f6\u5b57\u7b26\uff0c\u4e00\u4e2a\u5341\u516d\u8fdb\u5236\u7684\u6570\u5360\u4e00\u4e2a\u5b57\u8282\uff0c\u96f6\u5b57\u7b26\u5728\u7b97\u5b57\u8282\u65f6\u4e0d\u5360\u5b57\u8282\uff0c\u4e4b\u540e\u7ed3\u679c\u5c31\u662f\u5360\u4e00\u4e2a\u5b57\u8282

\u8fd9\u662fc++\u554a...
#include
#include

using namespace std;

class Set {
protected:
int* arr;
int len;

public:
Set(void) {
arr = new int[0];
len = 0;
}
Set(const Set& right) {
len = right.len;
arr = new int[len];
memmove(arr, right.arr, right.len * sizeof(int));
}
~Set(void) {
delete[] arr;
}

inline int& operator[](int i) {
if (i >= len || i < 0) { throw invalid_argument("i"); }
return arr[i];
}
inline const int& operator[](int i) const {
if (i >= len || i < 0) { throw invalid_argument("i"); }
return arr[i];
}
inline int size(void) const {
return len;
}

int find(int a) const {
for (int i = 0; i < len; i++) {
if (arr[i] == a) {
return i;
}
}

return -1;
}

void resize(int newLen, int val) {
if (newLen < 0 || newLen == len) {
return;
}

int* p = new int[newLen];
memmove(p, arr, ((len < newLen) ? len : newLen) * sizeof(int));
delete[] arr;
arr = p;

if (newLen > len) {
do {
arr[len] = val;
} while (++len < newLen);
}
else {
len = newLen;
}
}

void add(int a) {
int index = find(a);
if (-1 == index) {
resize(len + 1, a);
}
}
};

void Show(const Set& a) {
for (int i = 0; i < a.size(); i++) {
cout << a[i] << ", ";
}
cout << endl;
}

int main(int argc, const char* const argv[]) {
Set a;
a.add(5);
Show(a);
a.add(8);
Show(a);
a.add(5);
Show(a);

return 0;
}

程序思路:

先对总数组按年龄从大到小(相同年龄按登记号从小到大)排序。这样老年人部分就直接排序完成,并且在整个队列的前部。之后再对后半部分(非老人)按登记号从小到大再次排列。这样整个数组顺序便是题目想要的顺序。

一、初始化函数(或者说是登记函数),定义结构数组,并用随机数填充数组。(结构成员按照题意设计)。你想要手动输入1000个病人,就自己写scanf。(病人个数定义为常量MAXP,为演示显示方便常量值我设20,你改成题目的1000即可,年龄阀值也设常量,按题目值为60,可修改)。

二、两次排序函数,先调用orderByAge做总排序并获得老人个数,再调用order_notOldman对非老人排序即可。

PS:函数使用请看我的备注。函数所有异常只做返回不做处理。编程边学边用,多看多练,上手就会有乐趣。祝编程让你快来。

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<time.h>

#define MAXP 20//最大病人数量

#define THD 60//判断老年人的阀值,小于该值不是老人

typedef struct patient//病人结构体

{

    char pNum[13];//12位病历本号,最后一位给结束符号!

    int age;//年龄

    int pSeq;//登记顺序

}PT;

PT *init();//初始化这里用随机数生成1000名病人,成功返回结构数组,失败返回NULL

//年龄:20~90随机数。病历号格式:字母开头PSQ+1+0000~0999登记号

int showPTS(PT *pts,int len);//打印数组

int orderByAge(PT *pts,int len,int *p_len_old,int threshold);//按年龄从大到小排序,年龄相同登记号小的在前(找出老龄人数据区间)

//参数1:总的结构数组;参数2:总数组长度;参数3:接收老年人的个数(传地址);参数4:老年人阀值(本题就是60,小于阀值不是老年)

int order_notOldman(PT *pts,int len);//排序(非老人)。按登记号从小到大

int main()

{

    PT *pts=NULL;

    int len_old;

    pts=init();

    if(!orderByAge(pts,MAXP,&len_old,THD))return 1;

    printf("对总结构数组,按年龄从大到小(年龄相同按登记号从小到大)顺序排列后的数组为:
");

    if(!showPTS(pts,MAXP))return 1;

    printf("其中老年人的个数是%d
",len_old);

    if(!order_notOldman(&pts[len_old],MAXP-len_old)) return 1;//老人都排在前面,从&pts[len_old]地址开始就是非老人

    printf("对非老人的数组区域,按登记号从小到大顺序排列后的数组为:
");

    if(!showPTS(pts,MAXP))return 1;

    return 0;

}

int showPTS(PT *pts,int len)

{

    int i;

    if(!pts || len==0)return 0;

    for(i=0;i<len;i++)

        printf("病历号:%s,年龄:%d,登记顺序:%d
",pts[i].pNum,pts[i].age,pts[i].pSeq);

    return 1;

}

PT *init()

{

    static PT pts[MAXP];

    int i,age;

    char str_temp[100];

    srand(time(NULL));

    for(i=0;i<MAXP;i++)

    {

        age=rand()%71+20;

        pts[i].age=age;

        pts[i].pSeq=i;

        strcpy(pts[i].pNum,"PSQ");

        strcat(pts[i].pNum,itoa(i+10000,str_temp,10));

    }

    if(!showPTS(pts,MAXP))return NULL;

    printf("%d名病人登记完毕!
===========================================
",MAXP);

    return pts;

}

int orderByAge(PT *pts,int len,int *p_len_old,int threshold)

{

    int i,j;

    PT pt_temp;

    if(!pts || len==0 || !p_len_old) return 0;

    for(i=0;i<len-1;i++)

        for(j=i+1;j<len;j++)

        {

            if((pts[i].age<pts[j].age)||(pts[i].age==pts[j].age && pts[i].pSeq>pts[j].pSeq))

            {

                pt_temp=pts[i];

                pts[i]=pts[j];

                pts[j]=pt_temp;

            }

        }

    //统计老人的个数

    for(i=0;i<len;i++,*p_len_old=i)

        if(pts[i].age<threshold) break;

    return 1;

}

int order_notOldman(PT *pts,int len)

{

    int i,j;

    PT pt_temp;

    if(!pts || len==0) return 0;

    for(i=0;i<len-1;i++)

        for(j=i+1;j<len;j++)

        {

            if(pts[i].pSeq>pts[j].pSeq)

            {

                pt_temp=pts[i];

                pts[i]=pts[j];

                pts[j]=pt_temp;

            }

        }

    return 1;

}



哈哈哈哈哈哈哈哈,隔~

  • C璇█棰樼洰姹傝В
    绛旓細绗竴涓棶棰橈細涓ゅ崟寮曞彿闂村す涓涓瓧绗︽剰鍛崇潃鎶婁腑闂寸殑瀛楃杞崲鎴怉SCII鐮侊紝瀵逛簬char绫诲瀷锛屽叾瀹炶鐢ˋSCII鐮佽祴鍊硷紝鎹㈠彞璇濊鍏跺疄ch = 'a';绛変环浜巆h = 97;锛屾墍浠'a'浜嬪疄涓婂凡缁忔妸a杞寲涓篈SCII鐮佺殑鏁板瓧缂栧彿锛屽彲浠ョ敤浜庢暟瀛楀姞鍑忋傜浜屼釜闂锛氱敤浜咲ev C++鍜孷isualStudio娴嬭瘯杩囬兘鏄潪娉曠殑锛屽師鍥犲ぇ姒傛槸鍥犱负\0鍜岀┖...
  • 姹傝В 杩欓鐢C璇█鎬庝箞鍋
    绛旓細include<stdio.h>#include<string.h>#include<stdlib.h>struct node{ int data; char s[100]; struct node *next;};int main(){ char c; char str[100]; int n,i,j,flag; struct node *head,*tail,*p,*q; head=(struct node*)malloc(sizeof(struct node)...
  • 姹傝В涓閬C璇█鍩虹缂栫▼棰樸
    绛旓細棣栧厛鐪嬩竴涓嬬▼搴忕殑閫昏緫锛堣櫧鐒惰矊浼奸涓诲簲璇ヤ笉鏄湪杩欎竴鍧楁湁闂锛氬叧浜巃scii鐮佺殑瑙i噴锛氶鍏堝緱鐭ラ亾姣忎釜瀛楃鍜屾暟鍊肩殑瀵瑰簲鍏崇郴锛堝浘涓嶆竻鏅板彲鐪嬫埑杩欓噷锛歛scii缂栫爜瀵瑰簲琛 濂戒簡锛岀幇鍦ㄧ湅绋嬪簭涓殑绗竴涓猧f璇彞锛屽湪鐢ㄥぇ浜庛佸皬浜庤繖浜涜繍绠楁瘮杈冪姣旇緝char鐨勬椂鍊欙紝浼氳嚜鍔ㄨ浆鎹负鏁存暟姣旇緝锛屼篃灏辨槸璇粹0鈥欎細杞崲鎴48锛屸1鈥...
  • 涓閬C璇█缂栫▼棰樻眰瑙
    绛旓細include<stdio.h> void main() { int a,n,s,t,i;scanf("%d%d",&a,&n); s=0; t=0;for ( i=0;i<n;i++ ) { t*=10; t+=a; s-=t;} s+=t; s+=t; printf("%d\n",s);} 棣栧厛杩欐槸涓涓疮鍜岀殑棰樼洰,瀹屾垚鏂规硶灏辨槸寰幆n娆,鍚戞眰鍜屽彉閲弒涓婅竟鍔爊椤,涓鑸惊鐜彉閲廼 鍏舵,...
  • 缂栫▼棰 c璇█姹傝В
    绛旓細缂栫▼棰 c璇█姹傝В 缂栫▼缁熻瀛︾敓鑰冭瘯鎴愮哗銆傝鏈塎涓鐢,杩涜N闂ㄨ绋嬬殑鑰冭瘯,姹傚鐢熻冭瘯鐨勬诲垎鏁板強骞冲潎鍒,骞舵寜鐓ф诲垎鐢遍珮鍒颁綆鐨勬搴忔墦鍗板鐢熺殑鍚嶆,瀛﹀彿,鍚勭鎴愮哗,鎬诲垎,鍜屽钩鍧囧垎鏁,M,N閫氳繃scanf(... 缂栫▼缁熻瀛︾敓鑰冭瘯鎴愮哗銆傝鏈塎涓鐢,杩涜N闂ㄨ绋嬬殑鑰冭瘯,姹傚鐢熻冭瘯鐨勬诲垎鏁板強骞冲潎鍒,骞舵寜鐓ф诲垎鐢遍珮鍒颁綆鐨勬搴...
  • c璇█绋嬪簭璁捐鐨勫熀纭棰樼洰姹傛暀,璇风粰瑙f瀽(澶氳拷绉垎)
    绛旓細4锛氳嫢鏈夊畾涔夛細int a=10,b=9,c=8;鎺ョ潃椤哄簭鎵ц鍚庝笅鍒楄鍙ユ槸锛屽彉閲廱涓殑鍊兼槸锛堬級c=(a-=(b-5));c=(a%11)+(b=3);鐢变笂闈㈢殑鍑犻涓哄熀纭锛宑=(a-=(b-5))鐩稿綋浜巆=(a=a-(b-5)),c=(a=10-(9-5)),c=(a=6),鎵浠=6,c=6,b=9(琛ㄨ揪寮廱-5骞舵病鏈夋敼鍙榖鐨勫)c=(a%11)+...
  • 姹傚ぇ绁C璇█缂栫▼,棰樼洰瑕佹眰鍦ㄤ笅闈
    绛旓細涓嬮潰鏄垜鐨勪唬鐮侊紝涓変釜鍑芥暟鍒嗗埆瀵瑰簲涓変釜闂銆俰nclude<stdio.h> define MLEN 20//瀛楃涓叉渶澶ч暱搴 char fun1();void fun2();void fun3();int main(void){ fun1();fun2();fun3();return 0;} char fun1(){ int nI;float nF;char c;char str[MLEN];printf("璇峰垎鍒緭鍏1涓暣鏁帮紝1涓...
  • c璇█棰樼洰姹傝В
    绛旓細include <stdio.h> int sum(int n){ int t;for(t=0;n;n/=10)t+=n%10;return t;} int isprime(int n){ int i;if(n<2)return 0;for(i=2;i*i<=n;++i)if(n%i==0)return 0;return 1;} int main(){ int i;for(i=100;i<1000;++i)if(isprime(i)&&(i%10+i/10%10)...
  • c璇█,姹傝В
    绛旓細濡傛灉i灏忎簬20 寰幆锝 寰幆锝 濡傛灉i鍙栦綑10 绛変簬0 灏辫烦鍑哄惊鐜 鍚﹀垯 i鑷噺1 锝 i鑷姞11 a绛変簬a鍔犱笂i 锝 鍐呭眰寰幆绗竴娆 0 鍙栦綑10 绛変簬0 璺冲嚭鍐呭眰寰幆 i+=11 a+=i a=11 i=11 i灏忎簬20缁х画寰幆 11%10 涓嶆槸 0 鎵浠ユ墽琛 i-- 鐒跺悗 10%10==0 璺冲嚭鍐呭眰寰幆 i=10+11 a=11+i = 11+...
  • C璇█棰樼洰姹傝В
    绛旓細(a)5>10 涓 5>-6锛屼篃灏辨槸1涓0锛岀粨鏋滀负鍋囷紝涔熷氨鏄0锛(b)5=-6鎴10>5锛屼篃灏辨槸0鎴1锛岀粨鏋滀负鐪燂紝涔熷氨鏄1锛(c)10>15涓-6<0鎴5>0锛屼篃灏辨槸0涓1鎴1銆傝繍绠楅『搴忔槸闈炰笌鎴栵紝鍙互璁版垚銆恘ot at all銆戯紙鍜宯ot and or璋愰煶锛夛紝鍏堢畻涓庡緱鍒0鎴1锛屾渶鍚庡緱鍑虹湡锛屼篃灏辨槸1锛(d)杩欓亾棰樺叾瀹炴湁...
  • 扩展阅读:扫一扫题目出答案 ... c语言题库及答案大全 ... c语言搜题神器app ... c++编程 ... c语言基础知识100题 ... c语言练习题库 ... 初学编程必背50个 ... c语言在线编程网站 ... c语言题100道及答案 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网