[1] C言語における,以下の用語またはプログラムの一部について説明せよ。
- 条件演算子
printf("%5i--->%+14.7e",a,b)- プリプロセッサ
[2] 再帰的プログラミングを用いて,2つのベクトルの内積を計算する関数inprodをC言語で作成した。2つのベクトルとそれらの要素数は,それぞれ配列変数a,bと変数iに代入される。関数inprodと,それを用いる関数mainからなるプログラムを以下に示す。括弧内に入れるべき式,または式の一部を答えよ。
#include<stdio.h>
_____(1)_____ ;
int main(){
int a[]={1,2,3}, b[]={100,10,1}, n=3;
printf("%d\n", inprod( _____(2)_____ ));
return 0;
}
int inprod(int a[], int b[], int i){
if( _____(3)_____ ){
return a[i-1]*b[i-1] _____(4)_____ ;
}else{
return 0;
}
}[3] 素数判定を行う関数primをC言語で作成した。変数xに値を受け取り,その変数の値が素数ならば1を,素数でなければ0を返す。ただし,変数xは1より大きな整数とする。括弧内に入れるべき式,または式の一部を答えよ。
int prim( int x){
int i, _____(1)_____ ;
for(i=2; i<x; i++){
if( _____(2)_____ ){
label=0;
return label;
}
}
return label;
}[4] 問[3]のプログラムの処理速度を向上するためには,どの箇所をどのように修正すればよいか論述せよ。
[5] 問[3]のプログラムを利用するための関数mainを作成せよ。この関数ではキーボードより変数yへ1より大きな整数を読み込む。それを関数primに引き渡して,関数primの結果に応じて,変数yが素数であれば”素数です.”,素数でなければ”素数ではありません.”と表示するようにせよ。
解答:
[1]
1)
条件式 ? 真の場合の値 : 偽の場合の値を返す3項演算子
変数aを5桁の10進数,変数bを符号付き全体14桁・小数部7桁の指数表記で出力
コンパイル前に include や define などのマクロ展開を行う前処理プログラム
[2]
(1)
(2)
(3)
(4)
[3]
(1)
(2)
[4]
[5]
这道题目全面考察了C语言的常用特性以及基础算法的实现。第一部分要求对语言基础概念进行简明阐述,涵盖了控制流、格式化输入输出以及编译流程。第二部分通过向量内积的计算考察了递归函数的编写,核心在于准确构建递归的终止条件与递推关系。第三和第四部分聚焦于素数判定算法,填空部分主要考察逻辑状态变量的初始化和取模运算,而优化部分则涉及算法复杂度的改进,将循环上限从线性降低至平方根级别可以有效提升计算性能。第五部分考察了基本的标准输入输出操作与条件分支控制。