❶ 簡單的演算法題c語言的
這道題是把後一半的數插到前一半數的中間,就是說一個數如果是在前半部分他在第幾位,就有多少個數插到他的前面。例如2一開始在第2位,那麼就要2個數將插到他的前面。那麼他的位置就變成原來的2倍。即代碼中的i*=2。當第一個數經過一輪操作後回到原來的位置,這時所有的數都回到原來的位置了。 後半部分的位置是插到前半部分相同位置的數的前面,就是2*(i-n)-1。
❷ c語言演算法選擇題
選c,假如編程錯誤怎麼運行出來。。。
❸ C語言演算法題
這是一個探索規律題,分析如下:
1級台階只有一種方法;2級台階也只有2種方法;3個台階有3種方法(3=2+1);4個台階有5種方法(5=3+2);5個台階有8種方法(8=5+3);6個台階有12種方法(12=8+4);以此類推:得出一個通式:An=An-2 + An-1
所以代碼很容易出來了:
#include<stdio.h>
#include<stdlib.h>
intmain(void)
{
inti,j,N;
inta[30];
a[0]=1,a[1]=2;
while(1)
{
printf("輸入樓梯台階數: ");
scanf("%d",&N);
if(N>30||N<1)
printf("樓梯台階數輸入錯誤,請重新輸入! ");
else
break;
}
for(i=2;i<N;i++)
a[i]=a[i-1]+a[i-2];
printf("%d級樓梯的走法共有%d種。 ",N,a[N-1]);
system("pause");
return0;
}
❹ 全國計算機等級考試二級c語言考的是題庫里的題嗎都是歷年的題庫嗎題庫在哪買,會考原題嗎
全國計算機等級考試二級c語言考的不都是題庫里的題,筆試題基本不是題庫裡面的,上機題目都是從題庫里抽取,題庫有100套。
筆試沒有所謂的題庫,一般參考書都是往年例題 ,可以從網上買來做練習。
《全國計算機等級考試二級C語言》可以作為參加全國計算機等級考試——二級C語言考試的復慣用書,也可作為學習C語言的參考書。
上機題目全部是從最近的一年的《C語言題庫》中抽取的。考題大部分是C語言,少部分是演算法與數據結構裡面的東西。
拓展資料:
全國計算機等級考試(National Computer Rank Examination,簡稱NCRE),是經原國家教育委員會(現教育部)批准,由教育部考試中心主辦,面向社會,用於考查應試人員計算機應用知識與技能的全國性計算機水平考試體系。
其中c語言程序設計的考試內容包括:
(1)單項選擇題,40題,40分(含公共基礎知識部分10分);
(2)程序填空題,2~3個空,18分;
(3)程序改錯題,2~3處錯誤,18分;
(4)程序設計題,1題,24分。
完全採取上機考試形式。各科上機考試時間均為 120 分鍾,滿分 100 分。
獲證條件:總分不低於 60 分。
❺ C語言一道演算法問題
❻ 幫我解決一道C語言演算法的問題
這是一個最大子序列和問題。通常用動態規劃法解。至於動態規劃的數學模型,懶得去查了,直接給你找了一個演算法,你湊合看吧。
從整數序列頭部開始掃描,假設現掃描到的位置為i,求取從0到i所有元素的和sum[i],sum[i]取最大值的地方即為最大子序列的結束位置,設為a。從結束位置a向前掃描,找到第一個小於零的位置b,b+1就是最大子序列的開始位置。求從b+1到a位置的值即可得到最大子序列和。按此思路該演算法時間復雜度為O(m+n),其中m, n分別為最大子序列的長度、給定整數序列的長度。
改進:根據對上述演算法的進一步分析,可以知道,最大子序列和中必然不存在前綴子序列小於0的情況,於是設一ThisSum用於指示當前子序列和。改進演算法描述如下:從整數序列頭部開始掃描,累加序列元素和ThisSum,若ThisSum<0,則停止累加子序列和,將ThisSum清零,並從下一位置重新開始累加ThisSum,否則將ThisSum與當前MaxSum比較,並更新MaxSum。此改進演算法時間復雜度僅為O(n),n為給定整數序列的長度。
int MaxSubsequenceSum3(const int A[], int N)
{
int ThisSum, MaxSum, i;
ThisSum = MaxSum = 0;
for(i = 0; i < N; i++)
{
ThisSum += A[i];
if(ThisSum > MaxSum)
MaxSum = ThisSum;
else if(ThisSum < 0)
ThisSum = 0;
}
return MaxSum;
}
❼ C語言經典演算法100例
第一行宏定義改為
#define PI 3.14159f
或者變數定義的時候改為 double r, area, c;
兩種改法都可以。你出現的也不是錯誤,是警告,因為常量 3.14159 默認是double類型,而你的變數是float類型,從double轉換為float的時候會損失精度。
❽ C語言 演算法題
#include<cstdio>
#include<iostream>
#include<string>
#include<algorithm>
#include<cstring>
using namespace std;
int data[100000];
int dp[100000];
int num;
bool Change(string s)
{
for(int i=0;i<s.size()+1;)
{
if(s[i]<='9'&&s[i]>='0')
{
int t=0;
while(s[i]<='9'&&s[i]>='0')
{
t=t*10+s[i]-'0';
i++;
}
data[num++]=t;
}
else if(s[i]==' '||i==s.size())
{
i++;
continue;
}
else{
return false;
}
}
return true;
}
int main()
{
string s;
while(getline(cin,s))
{
num=0;
bool flag=Change(s);
if(!flag)
{
cout<<"ERROR"<<endl;
continue;
}
/* for(int i=0;i<num;i++)
{
cout<<data[i]<<" ";
}*/
memset(dp,0,sizeof(dp));
int sum=0;
for(int i=0;i<num;i++)
{
sum+=data[i];
}
int half=sum/2;
// cout<<half<<endl;
for(int i=0;i<num;i++)
{
for(int j=half;j>=data[i];j--)
{
dp[j]=max(dp[j],dp[j-data[i]]+data[i]);
}
}
cout<<sum-dp[half]<<" "<<dp[half]<<endl;
}
}
❾ C語言演算法模擬題 目標柏林
#include<stdio.h>
#include<string.h>
#defineLEN1000+10
voidturn_right(char*c,int*a,intk)//順時針旋轉
{
inti;
chartemp;
temp=c[a[k-1]];
for(i=0;i<k-1;i++)
c[a[k-1-i]]=c[a[k-2-i]];
c[a[0]]=temp;
}
voidturn_left(char*c,int*a,intk)//逆時針旋轉
{
inti;
chartemp;
temp=c[a[0]];
for(i=0;i<k-1;i++)
c[a[i]]=c[a[i+1]];
c[a[k-1]]=temp;
}
charc[LEN];
inta[LEN][LEN]={0};
intmain()
{
intlen;
inti,j,k=0;
for(i=1;i<=1000;i++){//這里把1-n的所有倍數都處理出來,不用每次循環都求,節省時間
k=0;
for(j=0;j<1000;j++){
if((j+1)%i==0)
a[i][k++]=j;
}
}
while(gets(c))
{
len=strlen(c);
for(i=len;i>=1;i--)
{
k=len/i;
if(k==1)
continue;
if(i%2==0)
turn_right(c,a[i],k);
else
turn_left(c,a[i],k);
}
puts(c);
}
return0;
}
參考下這個AC代碼哈。
❿ 求C語言上機題庫 另求計算機二級考試看那本書好 以前沒學過C語言, 上機題庫是不是考試時一定能考到裡面的
筆試的:
公共基礎知識
基本要求
1.掌握演算法的基本概念。
2.掌握基本數據結構及其操作。
3.掌握基本排序和查找演算法。
4.掌握逐步求精的結構化程序設計方法。
5.掌握軟體工程的基本方法,具有初步應用相關技術進行軟體開發的能力。
6.掌握資料庫的基本知識,了解關系資料庫的設計。
考試內容
一、基本數據結構與演算法
1.演算法的基本概念;演算法復雜度的概念和意義(時間復雜度與空間復雜度)。
2.數據結構的定義;數據的邏輯結構與存儲結構;數據結構的圖形表示;線性結構與非線性結構的概念。
3.線性表的定義;線性表的順序存儲結構及其插入與刪除運算。
4.棧和隊列的定義;棧和隊列的順序存儲結構及其基本運算。
5.線性單鏈表、雙向鏈表與循環鏈表的結構及其基本運算。
6.樹的基本概念;二叉樹的定義及其存儲結構;二叉樹的前序、中序和後序遍歷。
7.順序查找與二分法查找演算法;基本排序演算法(交換類排序,選擇類排序,插入類排序)。
二、程序設計基礎
1.程序設計方法與風格
2.結構化程序設計。
3.面向對象的程序設計方法,對象,方法,屬性及繼承與多態性。
三、軟體工程基礎
1.軟體工程基本概念,軟體生命周期概念,軟體工具與軟體開發環境。
2.結構化分析方法,數據流圖,數據字典,軟體需求規格說明書。
3.結構化設計方法,總體設計與詳細設計。
4.軟體測試的方法,白盒測試與黑盒測試,測試用例設計,軟體測試的實施,單元測試、集成測試和系統測試。
5.程序的調試,靜態調試與動態調試。
四、資料庫設計基礎
1.資料庫的基本概念:資料庫,資料庫管理系統,資料庫系統。
2.數據模型,實體聯系模型及E―R圖,從E―R圖導出關系數據模型。
3.關系代數運算,包括集合運算及選擇、投影、連接運算,資料庫規范化理 論。
4.資料庫設計方法和步驟:需求分析、概念設計、邏輯設計和物理設計的相關策略。
考試方式
1.公共基礎知識的考試方式為筆試,與C語言程序設計(C++語言程序設計、Java語言程序設計、Visual Basic語言程序設計、Visual FoxPro資料庫程序設計或Access資料庫程序設計)的筆試部分合為一張試卷,公共基礎知識部分佔全卷的30分。
2.公共基礎知識有l0道選擇題和5道填空題。
C語言程序設計
基本要求
1.熟悉TURBO C集成環境。
2.熟練掌握結構化程序設計的方法,具有良好的程序設計風格。
3.掌握程序設計中簡單的數據結構和演算法。
4.TURBO C的集成環境下,能夠編寫簡單的C程序,並具有基本的糾錯和調試程序的能力。
考試內容
一、C語言的結構
1.程序的構成,MAIN函數和其他函數。
2.頭文件,數據說明,函數的開始和結束標志。
3.源程序的書寫格式。
4.C語言的風格。
二、數據類型及其運算
1.C的數據類型(基本類型,構造類型,指針類型,空類型)及其定義方法。
2.C運算符的種類、運算優先順序和結合性。
3.不同類型數據間的轉換與運算。
4.C表達式類型(賦值表達式,算術表達式,關系表達式,邏輯表達式,條件表達式,逗號表達式)和求值規則。
三、基本語句
1.表達式語句,空語句,復合語句。
2.數據的輸入與輸出,輸入輸出函數的調用。
3.復合語句。
4.GOTO語句和語句標號的使用。
四、選擇結構程序設計
1.用IF語句實現選擇結構。
2.用SWITCH語句實現多分支選擇結構。
3.選擇結構的嵌套。
五、循環結構程序設計
1.FOR循環結構。
2.WHILE和DO WHILE循環結構。
3.CONTINUE語句和BREAK語句。
4.循環的嵌套。
六、數組的定義和引用
1.一維數組和多維數組的定義、初始化和引用
2.字元串與字元數組。
七、函數
1.庫函數的正確調用。
2.函數的定義方法。
3.函數的類型和返回值。
4.形式參數與實在參數,參數值的傳遞。
5.函數的正確調用,嵌套調用,遞歸調用。
6.局部變數和全局變數。
7.變數的存儲類別(自動,靜態,寄存器,外部),變數的作用域和生存期。
8.內部函數與外部函數。
八、編譯預處理
1.宏定義:不帶參數的宏定義;帶參數的宏定義。
2.「文件包含」處理。
九、指針
1.指針與指針變數的概念,指針與地址運算符。
2.變數、數組、字元串、函數、結構體的指針以及指向變數、數組、字元串、函數、結構體的指針變數。通過指針引用以上各類型數據。
3.用指針作函數參數。
4.返回指針值的指針函數。
5.指針數組,指向指針的指針,MAIN函數的命令行參數。
十、結構體(即「結構」)與共用體(即「聯合」)
1.結構體和共用體類型數據的定義方法和引用方法。
2.用指針和結構體構成鏈表,單向鏈表的建立、輸出、刪除與插入。
十一、位運算
1.位運算符的含義及使用。
2.簡單的位運算。
十二、文件操作
只要求緩沖文件系統(即高級磁碟I/O系統),對非標准緩沖文件系統(即低級磁碟I/O系統)不要求。
1.文件類型指針(FILE類型指針)。
2.文件的打開與關閉(FOPEN,FCLOSE)。
3.文件的讀寫(FPUTC,FGETC,FPUTS,FGETS,FREAD,FWRITE,FPRINTF,FSCANF函數),文件的定位(REWIND,FSEEK函數)。