第三屆全國高校計算機能力挑戰賽-C

單項選擇題


1.題
(3.0分) 以下敘述正確的是()。
 
 
 
 

2.題
(3.0分) 下面選項中,是不合法的C語言整型常量的是()。
 
 
 
 

3.題
(3.0分) 下面選項中, 不合法的C語言字符串常量的是()。
 
 
 
 

4.題
(3.0分)

C程序中,已有語句int x;float y;char z;
scanf("%d%f%c",&x,&y,&z); ,要求使用變量x,y,z的值分別爲5,3.14,B,則正確的數據輸入方式是()。

 
 
 
 

5.題
(3.0分) 對於整型變量x,y,z,且x=1,y=2,z=3,則下面表達式值爲0的是()。
 
 
 
 

6.題
(3.0分) 已有語句int x=2,y=3; 關於if語句編譯提示出錯的是()。
 
 
 
 

7.題
(3.0分) 已有定義int a,b,c;則表達式(a = 1,b = 2,b++,a+b)的值爲()
 
 
 
 

8.題
(3.0分) 已有整型變量x=0,語句while(x++<=2) ; 以下敘述正確的是()。
 
 
 
 

9.題
(3.0分) 執行語句for(i=1;i++<10;);後變量i的值爲()。
 
 
 
 

10.題
(3.0分) C語言中一維數組定義正確的語句是()
 
 
 
 

11.題
(3.0分) 對於兩個整型指針變量p,q,兩個變量之間不可以的運算是( )
 
 
 
 

12.題
(3.0分) C語言中,有語句 int x,*p=&x;以下敘述不正確的是()。
 
 
 
 

13.題
(3.0分) C語言程序中,函數返回值的類型取決於()
 
 
 
 

14.題
(3.0分)

以下對結構體類型point中成員x的不正確引用是( )

struct point

{ int x;

int y;

}a,*p;

p = &a;

 
 
 
 

15.題
(3.0分) 某算法對數據序列的大多數操作是在序列的未尾端插入或刪除元素,則用下面選項的存儲能減少算法的運算時間的是( )。
 
 
 
 
如有發現錯題,辛苦提出哈~

編程題

第一題

#include <stdio.h>

struct  User
{
    char *name[10];
    double c1;
    double c2;
    double c3;
};

int main()
{
int garde[3]; int score[5]; int max_result=0; int result=0; struct User user[5]; //錄入數據 scanf("%d %d %d",&garde[0],&garde[1],&garde[2]); for(int i=0;i<5;i++) { scanf("%s %lf %lf %lf",user[i].name,&user[i].c1,&user[i].c2,&user[i].c3); } //計算 for(int i=0;i<5;i++) { score[i]=user[i].c1*garde[0]*0.01+user[i].c2*garde[1]*0.01+user[i].c3*garde[2]*0.01; if(score[i]>max_result) { max_result=score[i]; result=i; } } //輸出 printf("%s %d",user[result].name,max_result); system("pause"); return 0; }

超時啦!

第二題

A21表示11進制,後面21對應的十進制爲23

B10表示12進制,後面10對應的十進制爲13

Cb表示13進制,後面b對應的十進制爲11

 

第三題

參考:空間中任意三個點組成三角形面積

#include <stdio.h> 
#include <math.h>
#include <stdbool.h>

/*
3
0 0 0
0 4 0
0 0 3
*/
 
struct Node{
    int x, y, z;
};
 
double MAX = 0;
int n;
struct Node *t;
//計算兩點之間的距離
double L3(int i, int j){
    return sqrt((double)((t[i].x - t[j].x)*(t[i].x - t[j].x) + (t[i].y - t[j].y)*(t[i].y - t[j].y) + (t[i].z - t[j].z)*(t[i].z - t[j].z)));
}
 
//判斷是否是三角形
bool isSan(int i, int j, int k){
    double a = L3(i, j);
    double b = L3(i, k);
    double c = L3(k, j);
    if (a < (b + c) && b < (a + c) && c < (a + b))
    {
        return true;
    }
    return false;
}
 
//計算三角形面積
double CmputeArea(int i, int j, int k){
    double a = L3(i, j);
    double b = L3(i, k);
    double c = L3(k, j);
    double p = (a + b + c) / 2;
    return  sqrt(p * (p - a) * (p - b) * (p - c));
}
 
//遍歷所有可能的三個點
void run(){
    for (int i = 0; i < n; i++)
    {
        for (int j = i + 1; j < n; j++)
        {
            for (int k = j + 1; k < n; k++)
            {
                if (isSan(i, j, k))
                {
                    double tArea = CmputeArea(i, j, k);
                    if (tArea > MAX)
                    {
                        MAX = tArea;
                    }
                }
            }
        }
    }
}

int main(){
    
    //輸入
    scanf("%d",&n);
    t=(struct Node*)malloc(sizeof(struct Node)*n); 
    for (int i = 0; i < n; i++)
    {
        scanf("%d %d %d",&t[i].x,&t[i].y,&t[i].z);    
    }

    //計算
    run();
    
    //輸出
    printf("%.2lf\n", MAX);
    free(t);
    system("pause");
    return 0;
}

 

第四題

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章